如何从Ajax Post调用跨域WebAPI调用?

时间:2017-08-11 20:18:26

标签: json ajax asp.net-mvc asp.net-web-api

我可以致电Event.observe(window, 'load', init); 但是当我尝试使用WebAPIJSON API方法发布Ajax数据时,我得到了POST个值。我在这里做错了什么?

我在null中有以下代码 enter image description here

WebAPI的代码

MyData class

public class MyData { public string FirstName { get; set; } public string LastName { get; set; } } 来电的代码

Ajax

1 个答案:

答案 0 :(得分:2)

jQuery.ajax()方法不知道名为" ContentType"的属性。使用标题C.切换到contentType

总而言之,它应该是这样的:

//With or without value property
var _data = JSON.stringify({ FirstName: "ABC", LastName: "XYZ" });
$.ajax({
    url: "http://localhost:57786/api/values",
    type: "POST",
    contentType: "application/json", //lower case 'c'!
    data: _data,
    success: function (data) {
        alert("Success");
    },
    error: function (error) {
        alert("Error");
    }
});

如果您想收到错误,如果您的模型无效,则需要在您的控制器中执行此操作:

public HttpResponseMessage Post([FromBody]MyData value)
{
    if(value.FirstName != null && value.LastName != null)
    {
        return Request.CreateResponse(HttpStatusCode.OK);
    }
    return Request.CreateResponse(HttpStatusCode.BadRequest, "Something went wrong");
}

现在,如果您将无效的json发布到模型绑定器,您将收到错误请求错误消息。