2017-02-06 2 views
0

を呼び出します。上記の関数は、ユーザーがページの一番下までスクロールした場合に呼び出されます。非非同期POSTは、私が動作し、データを返し、次のを持っている

Firefoxで何が起こるかは、ユーザーがスクロールすると、関数が何回か呼び出され、5つの異なるデータセットの代わりに、同じデータセットが5回以上表示されます。

上記の呼び出しに代わるものは何でしょうか。非同期ではありませんし、古い同期の "古いビットが完了するまで待ってください"というコードはありませんか?

+3

それは非同期で働いてます私は強くあなたをお勧めします - 同期要求は(HTTPS [既に仕様で非推奨]されている://xhr.spec。 whatwg.org/#sync-warning)(ウェブワーカーの外)。 –

+0

おそらく、ユーザーが5回トリガしている場合、ユーザが一番下までスクロールしたかどうかを検出している機構が故障している可能性がありますか? – ADyson

+0

私の答えをチェックしてください。 – Mazz

答えて

1

は、それがロードされた場合にフラグを設定するようにしてください:

var loading = false; 
function ScrollToBottom() { 
    if(loading) return; 
    loading = true; 
    $.ajax({ 
     async: false, 
     type: "POST", 
     url: "index.aspx/function", 
     data: 'val,val2,val3', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: OnSuccess, 
     failure: function (response) { 

      alert('An error has occured, please refresh the page.'); 
     }, 
     error: function (response) { 
      alert('An error has occured, please refresh the page.'); 
     }, 
     always: function(response){ 
      loading = false; 
     } 
    }); 
} 

function OnSuccess(response) { 
    var xmlDoc = $.parseXML(response.d); 
    var xml = $(xmlDoc); 
} 
関連する問題