我正在尝试使用 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 控制器中的服务器代码(操作)如下所示:
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 缓存控制:私有内容类型:应用程序/json;charset=utf-8 服务器:Microsoft-IIS/7.5 X-AspNetMvc-Version:4.0 X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET 日期:2013 年 7 月 31 日星期三 17:38:50 GMT内容长度:20
{"UnreadMsgCount":3}
这看起来不错,是我所期望的,但是当网站上线时我从来没有看到过这个请求。Fiddler2 从不显示任何传出的 Ajax 请求,谷歌浏览器的控制台显示:
对象{readyState:0,getResponseHeader:函数,getAllResponseHeaders:函数,setRequestHeader:函数,overrideMimeType:函数...}
其中有 status:0 和 statusText: "error" 里面。而已。
如果我的代码没有问题,我究竟该如何调查这个问题?有没有人见过这个?
编辑
在使用包括 IE、Firefox 和 Safari 在内的多种浏览器测试此问题后,似乎该问题仅限于 Google Chrome。我已在此处提交了错误报告,并将根据我收到的任何回复更新此帖子。
谢谢,