我希望 Ajax 在信息有效时获取信息。所以如果我这样做
$(document).ready(function () {
var url = '/my/url/';
var ses = true;
var i = 0;
while (ses) {
i++;
var temp;
$.get(url + "?get=" + i, function (data) {
if (data != '') {
temp = data;
sortArticles(data);
}
});
if(temp == '') ses = false;
}
});
如果我在没有 while
的情况下执行此操作(输入 0 而不是 get
var),我会得到我需要的信息,但如果我这样输入,我会输入一个无限循环和分页。顺便说一句,我进行了测试,if(data != '')
语句按预期工作。
我不知道为什么 temp
不改变 ses
变量的状态。我尝试在 $.get(..)
else ses = false;
但它也没有达到目的。
感谢您的阅读!
最佳答案
jQuery ajax(与大多数 ajax 实现一样)($.get()
是其简写)默认是异步的。回调函数仅在请求完成后执行。 while 会无限期地继续,因为如果不将控制权交给 JS 引擎,回调就没有机会完成它的工作 - 即使请求已完成。
为了持续发送请求,请尝试这样:
function requestMore(i) {
$.get('/my/url/?get=' + i, function (data) {
if (data != '') {
sortArticles(data);
requestMore(i + 1);
}
});
}
(document).ready(function () {
requestMore(1);
});
关于javascript - while 循环内的 Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31915314/