我的asp.net httpPost无法使用AJAX请求。
我的控制器:
[Route("api/sendData")]
public class TestController : ApiController
{
[HttpPost]
public bool Post(PostData data)
{
return true;
}
}
我的帖子数据:
public class PostData
{
public int Id { get; set; }
}
来自html文件的我的AJAX请求:
var data = {
Id : 1
};
$.ajax(
{
url: "api/sendData",
type: "POST",
dataType: 'json',
data: data,
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);
}
});
我不知道为什么它会返回404 Not Found。有人知道我做错了吗?
由于
答案 0 :(得分:1)
RouteAttribute
应该应用于操作方法名称而不是控制器类,以便操作方法变为:
public class TestController : ApiController
{
[HttpPost]
[Route("api/sendData")]
public bool Post(PostData data)
{
return true;
}
}
如果要在控制器级别上使用属性路由,则应使用RoutePrefixAttribute
代替。
此外,如果要在对象模型中传递属性,则需要使用JSON.stringify
并设置contentType: "application/json"
,因为您要将JSON对象发送到操作方法:
<script>
var data = { Id: 1,
// other properties
};
$.ajax({
url: "api/sendData",
type: "POST",
contentType: "application/json",
dataType: 'json',
data: JSON.stringify(data),
success: function (result) {
console.debug(result);
alert(result);
},
error: function (xhr, status, p3, p4) {
// error handling here
}
});
</script>