2012-03-09 33 views
1

ajaxリクエストを取得する最良の方法は何ですか。setInterval、ajaxリクエスト

マインは、javascript関数を呼び出すたびに、高速かつ高速に取得されます。 理由はわかりません。ここ

はコードです:

$(function(){ 
getSuggestions(); 
}); 

function getSuggestions(){ 
    var url = $("#baseUrl").val() + '/placement/suggestions/x-fetch-suggestions'; 
    var data ={} 
    var result = myAjaxJson(data,url); //gets json object via ajax 

/* gets object 'sug' and put into #suggestions-list*/ 
    $('#suggestions-list').html(result.sug); 

    var a = setInterval("getSuggestions()",5000); 
} 
+1

myAjaxJson' – Dogbert

+0

'の実装を追加してくださいあなたはインテルのAJAXを待つべき完了した後、' 'setInterval' – mgraph

+1

を開始setInterval'一度だけでなく、関数を繰り返し呼び出します:https://developer.mozilla.org/en/window.setInterval –

答えて

3

あなたには再帰的なダブルループがあります。

​​
2

あなたは新しいのsetIntervalあなたがgetSuggestionsを呼び出すたびに開始されます。外にそれを設定します。

$(function(){ 
    getSuggestions(); 
}); 

$(function(){ 
    var a = setInterval("getSuggestions()",5000); 
}); 

InsteedそしてgetSuggestionsメソッドからのsetIntervalコードを削除します。

0

のsetTimeoutを使用し、するsetIntervalを使用しないでください:

はこれを試してみてください。 setIntervalは、前のAjax要求が完了したかどうかに関係なく、5秒ごとに関数を呼び出します。 setTimeoutはthenext 1を開始する前のAjaxリクエストの後に5秒間待機します。:

$(function(){ 
getSuggestions(); 
}); 

function getSuggestions(){ 
    var url = $("#baseUrl").val() + '/placement/suggestions/x-fetch-suggestions'; 
    var data ={} 
    var result = myAjaxJson(data,url); //gets json object via ajax 

/* gets object 'sug' and put into #suggestions-list*/ 
    $('#suggestions-list').html(result.sug); 

    var a = setTimeout("getSuggestions()",5000); 
} 
0
var counter = 0; 
var timer = null; 
function loader(){ 
    if (timer) { 
     clearTimeout(timer); 
     timer = null; 
     return; 
    } 
    timer = window.setInterval(function(){ 
    $("#paragraph").load("file.php"); 
    }, 10); 
} 

window.onload = function() { 
    loader(); 
};