ajax之MVC 4 $Ajax JSON 请求返回状态 0,状态文本 : "error"
我正在尝试使用 jQuery $.ajax 每 5 秒更新一次我的页面上的值,这段代码以前可以正常工作,但在部署到生产服务器后,它似乎随机失败。在某些页面上它可以工作,而在其他页面上如果失败并显示错误:状态 0,状态文本:“错误”。
任何人都可以在代码/标记中发现任何用词不当的错误吗?
我用它每 5 秒调用一次我的方法:
setInterval(function () {
updateMessages();
}, 5000);
updateMessages 看起来像这样:
function updateMessages() {
$.ajax({
beforeSend: function () { },
complete: function () { },
type: "GET",
url: '@Url.Action("GetUnreadMessagesJson", "Message", new { Area = "" })',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
var newUnreadMessages = result.UnreadMsgCount;
},
error: function (rsult) {
console.log(rsult);
}
});
}
我在 MVC Controller 中的服务器代码(操作)如下所示:
public ActionResult GetUnreadMessagesJson() {
int unreadMessages = 0;
try {
unreadMessages = messageService.GetUnreadMessageCount(WebSecurity.CurrentUserId);
}
catch (Exception) {
throw;
}
return Json(new {
UnreadMsgCount = unreadMessages
//,UnreadMessages = unreadMessages
}, JsonRequestBehavior.AllowGet);
}
当我使用 Fiddler2 分析本地机器上的请求时,我在响应中看到了这一点:
HTTP/1.1 200 OK Cache-Control: private Content-Type: application/json; charset=utf-8 Server: Microsoft-IIS/7.5 X-AspNetMvc-Version: 4.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Wed, 31 Jul 2013 17:38:50 GMT Content-Length: 20
{"UnreadMsgCount":3}
这看起来不错,也是我所期望的,但是当网站上线时我从未看到过这个请求。 Fiddler2 从不显示任何传出的 Ajax 请求,谷歌浏览器的控制台显示:
Object {readyState: 0, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
里面有 status:0 和 statusText: "error"。而已。
如果我的代码没有任何问题,我到底该如何调查这个问题?有没有人见过这个?
编辑
在使用多个浏览器(包括 IE、Firefox 和 Safari)测试此问题后,该问题似乎仅限于 Google Chrome。我已提交错误报告 here并将用我得到的任何回复更新这篇文章。
谢谢,
请您参考如下方法:
显式设置 text/json 如下
return Json(new {
UnreadMsgCount = unreadMessages
//,UnreadMessages = unreadMessages
},
"text/json",
JsonRequestBehavior.AllowGet);
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



