rey*_*yes 2 javascript ajax jquery
当我使用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);
Run Code Online (Sandbox Code Playgroud)
我真的需要建议.先感谢您.对不起语法.
$.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();
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
请注意我是如何删除setInterval并将Ajax代码包装在函数中的.在success当阿贾克斯查询已成功完成回调将被调用,并给你的反应.一旦我们评估了响应,我们就可以doAjax再次运行该函数来再次运行查询.
| 归档时间: |
|
| 查看次数: |
11207 次 |
| 最近记录: |