我有一个奇怪的情况,我的 jquery.post 返回代码 #200(OK),但错误处理程序被命中。
这是我的 MVC WebAPI 服务器端代码(它所做的只是返回代码 #200 OK):
[HttpPost]
public HttpResponseMessage Post(T input)
{
//_handler.Create(input);
return Request.CreateResponse(HttpStatusCode.OK);
}
这是我的客户端脚本
ServerAccess.prototype.Save = function (m) {
$.post("http://localhost:55482/M/", m)
.success(
function (o) {
alert("success");
})
.error(
function (xhr, textStatus, errorThrown) {
if (typeof console == 'object' && typeof console.log == 'function') {
console.log(xhr);
console.log(textStatus);
console.log(errorThrown);
}
}
);
};
Firebug 中的控制台输出为:
POST
http://localhost:55482/M/
200 OK 894 毫秒标头
响应标头
内容长度 6
内容类型应用程序/json;字符集=utf-8
日期 2012 年 10 月 28 日星期日 18:55:17 GMT
服务器 Microsoft-HTTPAPI/2.0
请求标头
接受 /
接受编码 gzip,放气
接受语言 nb-no,nb;q=0.9,no-no;q=0.8,no;q=0.6,nn-no;q=0.5,nn;q=0.4,en-us;q=0.3,en ;q=0.1
连接保持活动
内容长度 21
内容类型应用程序/x-www-form-urlencoded;字符集=UTF-8
主机本地主机:55482
原点空
用户代理 Mozilla/5.0 (Windows NT 6.2; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0
和
对象 { readyState=0, status=0, statusText="error"}
错误
(一个空字符串)
我四处浏览并看到其他人也有类似的问题,通常响应中的 JSON 格式不正确。由于我只返回 200 OK 并且没有内容,这似乎不适合我的情况。但是我确实尝试像这样返回一个空对象
var o = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(new T());
return Request.CreateResponse(HttpStatusCode.OK, o);
服务器端从 Visual Studio 2012 运行,客户端只是一个带有一些 .js 文件的独立 .html。此外,在 VS 中有一个断点,我知道服务器收到了请求,并且使用 Postman for Chrome 一切都很好。
所以问题当然是:我在这里做错了什么?为什么错误处理程序会被命中?
谢谢!