asp.net ajax不发送数据

时间:2017-10-31 20:13:12

标签: jquery asp.net ajax asp.net-web-api

我的AJAX没有将数据发送到我的http post控制器。

我的控制器:

[Route("api/sendingData")]
public class TestController : ApiController
{
    [HttpPost]
    public string Post([FromBody] int propertyID)
    {
        return string.Format("Test");
    }
}

我的AJAX:

$.ajax(
    {
        url: "api/sendingData",
        type: "POST",
        dataType: 'json',
        data: {
            'propertyID': '1'
        },
        success: function (result) {
            console.debug(result);
            alert(result);
        },
        error: function (xhr, status, p3, p4) {
            console.debug(xhr);
            var err = "Error " + " " + status + " " + p3;
            if (xhr.responseText && xhr.responseText[0] == "{")
                err = JSON.parse(xhr.responseText).message;
            alert(err);
        }
    });

我正在尝试发送propertyID=1。但是,当我调试控制器时,它会显示propertyID=0

有谁知道出了什么问题?

1 个答案:

答案 0 :(得分:2)

可能看起来很奇怪,但你只发送一个值,而不是模型,所以stringify是JSON.stringify(value)

var propertyID = 1;
$.ajax({
    url: "api/sendingData",
    contentType: 'application/json',
    type: 'POST',
    data: JSON.stringify(propertyID),
    success: function (result) {
        console.debug(result);
        alert(result);
    },
    error: function (xhr, status, p3, p4) {
        console.debug(xhr);
        var err = "Error " + " " + status + " " + p3;
        if (xhr.responseText && xhr.responseText[0] == "{")
            err = JSON.parse(xhr.responseText).message;
        alert(err);
    }
});

我还删除了dataType json,因为你的action方法不是返回json而是返回一个字符串。现在我获得了成功。