javascript - while 循环内的 Ajax 调用

标签 javascript jquery ajax while-loop get

我希望 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 语句
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/

相关文章:

php - 无论如何,我可以通过 ajax 获取 PHP 数组的值吗?

javascript - 如何将 Javascript 文件对象+数据发送到 MVC 6 Controller - ASP.NET 5

javascript - jQuery Post blob 对象给出 Uncaught TypeError : Illegal invocation

javascript - 流程图 : change the axis data type to time

JavaScript 和 jQuery : accessing class member variables from event callback

javascript - 使用 jquery 和数组添加选择选项

jquery - 适用于在 iPad 上查看网站的最佳 jQuery Youtube 弹出窗口

javascript - 我如何将 javascript $.post 结果插入文本字段

javascript - 如何更新 MooTools Request.HTML 调用中的多个元素

javascript - 如何使用 React Hooks 捕获最后一个输入字母