获取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);
}
这里有一个递归的双循环。
试试这个:
$(function(){
var a = setInterval("getSuggestions()",5000);
});
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);
}
每次调用getSuggestions时都会启动新的setInterval。设置在外部:
$(function(){
var a = setInterval("getSuggestions()",5000);
});
的输入
$(function(){
getSuggestions();
});
并从getSuggestions方法中删除setInterval代码。
不要使用setInterval,使用setTimeout。setInterval每5秒调用一次函数,无论上一个Ajax请求是否完成。setTimeout将在上一个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);
}
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();
};