当我使用setInterval
和ajax从数据库检索数据时遇到这个问题,如果我从数据库检索的数据等于saveHere,那么它将再次循环,直到它不匹配变量 saveHere,它会卡住浏览器,直到我检索到的数据不等于 saveHere。
这是一个例子:
var saveHere = 'RED';
var interval = setInterval(function() {
var sample = $.ajax({
type: 'GET',
url: 'database.php',
data : data
}).responseText;
if (sample != 'RED') {
clearInterval(interval);
saveHere = sample;
}
else {
console.log('load again');
}
},1000);
我真的需要建议。先感谢您。抱歉语法错误。
最佳答案
$.ajax
是异步的,需要您使用回调来获取响应文本。
查看http://api.jquery.com/jQuery.ajax/处的文档
您想要做的是添加一个 success
参数。像这样的事情:
var saveHere = 'RED';
doAjax();
function doAjax() {
$.ajax({
type: 'GET',
url: 'database.php',
data: data,
success: function (sample) {
if (sample != 'RED') {
saveHere = sample;
} else {
console.log('load again');
doAjax();
}
}
});
}
请注意我是如何删除 setInterval
并将 Ajax 代码包装在函数中的。当 Ajax 查询成功完成时,success
回调将被调用,并给您响应。一旦我们评估了响应,我们就可以再次运行 doAjax
函数来再次运行查询。
关于javascript - setInterval 和 Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18844365/