1


0

jquery ajaxを使用してページを更新する

投稿時間とともにページにユーザーのコメントを表示するWebアプリケーションがあります。 定期的にコメントが投稿されるので、1分ごとにコメント投稿時間を更新する必要があります。 この目的のために、jquery ajaxを使用して、dbから時間を更新しています。 私のコードはこれです:

 setInterval("UpdateTime()", 60000);


function UpdateTime() {
    var id=$('#hdID').val();
    $.ajax({
        type: "POST",
        url: "mypage.aspx/UpdateTime",
        data: "{'id':'" + id + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            if (msg.d.length > 0) {
                obj = document.getElementById('feed_TimeStamp' + id);
                obj.innerHTML = msg.d;
                //$(obj).slideDown("slow");
            }
        },
        async: false,
        error: function(xhr, status, error) {
            //alert(xhr.statusText);
        }
    });
}

csファイル:

   [WebMethod]
   public static string UpdateTime(string id)
   {
       Comments comments = new Comments();
       string time = "";
       if (comments.LoadByPrimaryKey(Convert.ToInt32(id)))
           time = MyClass.GetTime(comments.CommentsDate);
       if (!(time.ToLower().Contains("sec") || time.ToLower().Contains("min")))
           time = "";
       return time;
   }

しかし、ここで私の問題は、このWebメソッドが実行される1分ごとに、ajax呼び出しが完了するまでWebページ全体がハングアップすることです。 ページをバス化せずに時間を更新したい。

3 Answer


3


これはメモリの問題である可能性があります。また、非同期のajax呼び出しの設定を変更します。

from

_ 非同期:false _

to

_ 非同期:true _

「async:false」と言うと、ブラウザが非同期の方法でリクエストを送信することを許可していないことを意味します。 - 非同期呼び出しである必要があります。

こちらのドキュメントを参照してください。

_ asyncデフォルト:trueデフォルトでは、すべてのリクエストは非同期に送信されます(つまり、 これはデフォルトでtrueに設定されています。 同期要求が必要な場合は、このオプションをfalseに設定してください。 クロスドメインリクエストとdataType: "jsonp"リクエストは、同期操作をサポートしていません。 同期要求はブラウザを一時的にロックし、要求がアクティブな間はアクションを無効にすることがあります。 _

提案:

ブラウザがデータを保持して要素に投稿するための結果セットが高い場合、メモリ内のLOTになる可能性のある「すべてのコメント」をロードしようとしていると思います。

「コメントパネルにない」全体ではなく、サーバーから新しいデータのみを要求することをお勧めします。そうすれば、すべての情報をメモリに保持するためにブラウザを盗聴することはありません。


1


jquery ajax関数を使用するとき

async: false,

リクエストが終了するまでページはビジーのままです。


0


これを取り出してください:async:false(デフォルトではtrueです)

まれに待機する必要がある場合を除いて、同期的にajax呼び出しを行わないでください。

これにより、ページの機能が確実にロックされます(マウスをクリックすることもできません)。