无法从jquery调用简单的web API post方法

inkz8wg9  于 12个月前  发布在  jQuery
关注(0)|答案(1)|浏览(99)

首先,我无法将模型从jquery传递到我的web-api,所以我更改了代码,并使用GET和POST编写了一个简单的控制器

using ContactInfo.Models;
using System.Collections.Generic;
using System.Linq;

using System.Web.Http;
using System.Web.Http.Cors;

namespace ContactInfo.Controllers
{
    [RoutePrefix("api/Contact")]
    public class ContactController : ApiController
    {
        List<ContactDto> contactList = new List<ContactDto>
       {
            new ContactDto { ContactId = 1, ContactName = "x", MobileNumber="1234567890" },
            new ContactDto { ContactId = 1, ContactName = "y", MobileNumber="1234567890" },
       };
        [HttpGet]
        [Route("GetProducts")]
        public IEnumerable<ContactDto> GetAllProducts()
        {
            return contactList;
        }
        [Route("AddProduct")]
        [HttpPost]
        public string Add(string name)
        {
            return name;
        }
    }
}

字符串
我的HTML如下

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

</head>
<body>
    <!--<button id="Result" value="Submit" />-->
    <input id="Result" name="Result" type="button" value="Submit" />

    <script type="text/javascript">
        $(document).ready(function () {
            var name = 'hi';
            $("#Result").click(function () {
                $.ajax({
                    url: 'http://localhost:51856/api/Contact/AddProduct',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    type: 'POST',
                    data: name,
                    success: function (response) {
                        alert('hello');
                    },
                    failure: function (response) {
                        alert(response.responseText);
                    },
                    error: function (response) {
                        alert(response.responseText);
                    }
                });
            });
        });
    </script>
</body>
</html>


我得到的错误是如下提交表格
“消息”:“找不到与请求URI 'http://localhost:51856/api/Contact/AddProduct'匹配的HTTP资源。",“MessageDetail”:“在控制器'Contact'上找不到与请求匹配的操作。"}

u91tlkcl

u91tlkcl1#

你做错了。有两种方法可以做到这一点。

  • 第一种方法-

添加模型类StudentModel.cs

public class StudentModel
{
    public string name { get; set; }
}

字符串
然后接受该参数作为模型-

[Route("AddProduct")]
[HttpPost]
public string Add(StudentModel model)
{
    return "";
}


在Jquery Request中->

var postData = {};
postData.name = "Tom";
$("#Result").click(function () {
            $.ajax({
                url: '/api/Contact/AddProduct',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                type: 'POST',
                data: JSON.stringify(postData),
                success: function (response) {
                    alert('hello');
                },
                failure: function (response) {
                    alert(response.responseText);
                },
                error: function (response) {
                    alert(response.responseText);
                }
            });
        });

  • 第二种方法->在URL url: '/api/Contact/AddProduct?name=' + name中传递name作为参数,并在Action AddProduct中接受参数作为字符串(不推荐,因为它是POST请求)

相关问题