ajax之MVC 4 $Ajax JSON 请求返回状态 0,状态文本 : "error"

bluestorm 阅读:48 2025-06-02 22:19:02 评论:0

我正在尝试使用 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); 


标签:ajax
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号