使用jQuery AJAX分页进行While循环

使用jQuery AJAX分页进行While循环,jquery,ajax,pagination,Jquery,Ajax,Pagination,好的,这是我的问题。我正在使用一个使用分页的API。我一直循环,直到返回的响应是一个空白数组。但是,这不起作用,代码只是挂起。在每个循环中,我递增page变量以获得下一页 // Function to get a list of 50 assignments. function getAssignments(token, instuctureSubdomain, course, page, callback) { var settings = { "async": true,

好的,这是我的问题。我正在使用一个使用分页的API。我一直循环,直到返回的响应是一个空白数组。但是,这不起作用,代码只是挂起。在每个循环中,我递增page变量以获得下一页

// Function to get a list of 50 assignments.
function getAssignments(token, instuctureSubdomain, course, page, callback) {
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "https://" + instuctureSubdomain + ".instructure.com/api/v1/users/self/courses/" + course + "/assignments?per_page=50&page=" + page,
      "method": "GET",
      "headers": {
        "authorization": "Bearer " + token,
        "cache-control": "no-cache"
      }
    }

    $.ajax(settings).done(function (response) {
      callback(response);
    });
};

var loop = true;
var page = 1;
while (loop) {
    getAssignments(token, instuctureSubdomain, item.id, page, function (response) {
        if (response.length == 0) {
// End the loop because the response returned a blank array.
            loop = false;
        } else {
            response.forEach(function (item) {
// Add the assignment to an array...
            });
            page++
        };
    });
};

我会这样写的。它不会因为大量的请求而延迟/冻结你的网页,并且几乎同步地调用它

<script>

function loop (i) {
    $.get("http://example.com/api/" + i + ".php", function (data) {
        array = process(data);
        if (array.length > 0) {
            loop(i + 1);
        }
    });
}

loop(1);

</script>

函数循环(一){
$.get(”http://example.com/api/“+i+”.php“,函数(数据){
数组=进程(数据);
如果(array.length>0){
环路(i+1);
}
});
}
回路(1);

您是否尝试过使用console.log查看您得到的结果?我建议从这里开始。如果分页一次显示10个,假设您总共有48个结果,那么最终响应长度不是0而是8吗?@Harry True,但是循环应该再次运行,然后API将返回一个空白数组来停止循环。如果您编写
if(response.length<页面项目数),是否会改变情况{loop=false;}
相反?@Harry Nope,另一件事是我尝试在循环的开头添加一个console.log,但没有得到任何响应。