【发布时间】:2014-11-10 16:57:34
【问题描述】:
抱歉,如果这个问题已经得到解答,但我搜索了许多相关术语,没有任何乐趣。
我有一个带有 Post 方法的简单 WebApi 控制器:
[HttpPost]
public string Post()
{
string thing = "hi";
var jSonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var output = jSonSerializer.Serialize(thing);
return output;
}
我还有一个对上述 Post 方法的 Ajax 调用,在单击按钮时执行:
$.ajax({
type: 'POST',
url: 'http://localhost:58492/WebApi/api/PhysicalActivity',
dataType: 'json',
success: function (response) {
console.dir(response.status);
},
error: function (thing) {
alert("Ajax call to PhysicalActivity/Post failed");
}
});
请求肯定会通过 WebApi post 方法,因为我设置了一个断点,并且一直被命中。
但是,它没有收到成功的响应。正在命中 Ajax 错误回调。
事实上,我还在 Ajax 错误回调中设置了一个断点,并且该断点在 post 方法断点之前被命中 - 所以 Ajax 调用在进入 Post 方法之前就出错了。
我尝试从 Post 方法返回一个字符串,并在 Ajax 调用中设置 dataType = 'text',但这并没有什么区别。
我也尝试过从 Post 方法显式返回一个 HttpResponseMessage 对象。没有区别。
当我在 Ajax 请求中将 contentType 设置为 'text/plain' 并将数据设置为 'hello' 时,调用甚至没有到达 Post 方法,并且我收到 405 响应('method not allowed') .
我做错了什么??
【问题讨论】:
-
尝试在浏览器中使用 (F12) 开发者工具并检查“url”,它可能会覆盖它的路由..
-
您是否通过在返回语句上创建断点来检查您的 Post 方法是否返回某些东西
标签: jquery ajax json asp.net-web-api