4

jQuery $.ajax を使用して 5 秒ごとにページの値を更新しようとしています。このコードは以前は正常に動作していましたが、運用サーバーに展開した後、ランダムに失敗しているように見えます。一部のページでは機能し、他のページではエラーで失敗します: status 0, statusText: "error".

コード/マークアップでエラーの誤称を見つけられる人はいますか?

これを使用して、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 日付: Wed, 31 Jul 2013 17:38:50 GMTコンテンツの長さ: 20

{"UnreadMsgCount":3}

これは見栄えがよく、期待どおりですが、サイトが稼働しているときにこの要求が表示されることはありません. Fiddler2 は発信 Ajax リクエストを表示しません。Google Chrome のコンソールには次のように表示されます。

オブジェクト {readyState: 0、getResponseHeader: 関数、getAllResponseHeaders: 関数、setRequestHeader: 関数、overrideMimeType: 関数…}

status:0 と statusText: "error" が内部にあります。これ以上何もない。

コードに問題がない場合、一体どうすればこの問題を調査できるのでしょうか? 誰もこれを見たことがありますか?

編集

この問題を IE、Firefox、Safari などのいくつかのブラウザでテストしたところ、問題は Google Chrome にのみ限定されているようです。ここにバグ レポートを送信しました。返信があればこの投稿を更新します。

ありがとう、

4

2 に答える 2

0

次のように text/json を明示的に設定します

 return Json(new {
   UnreadMsgCount = unreadMessages
   //,UnreadMessages = unreadMessages
 }, 
 "text/json",
JsonRequestBehavior.AllowGet);
于 2013-11-13T15:06:03.443 に答える