让我解释一下我的情况,
我在字段集中有一个复选框列表,对于每个复选框,我想发送一个 jquery get 并等待服务器的响应,这可以是随机时间 10 秒到很长时间,一旦我得到结果显示结果并继续下一个循环。
$(function() {
$("button[name=distributeGroupProgramsToCustomersNow]").click(function() {
event.preventDefault();
$("button[name=distributeGroupProgramsToCustomersNow]").attr("disabled", "");
$("input[name='distributeGroups-GroupsList']:checked").each(function ()
{
// the loop that waits for the response
});
$("button[name=distributeGroupProgramsToCustomersNow]").removeAttr("disabled", "");
});
});
我如何在 jQuery 中实现这一点?
非常感谢任何帮助,谢谢!
最佳答案
您可以通过同步调用 ajax 来实现,这样循环必须等待响应才能继续。
$.each(arrayOfItems, function(i,v){
$.ajax({
url: 'path/to/my/file.extension',
type: 'GET', //this is already the default, only placed as an example.
async: false, // this is what you want to make sure things 'wait'.
data: 'checkedValue='+v, //value of our item.
success: function(data){
//manipulate / insert the data where you need.
$("#someElement").append(data);
}
});
});
工作原理
对于每个项目,我们都有一个 ajax 调用。禁用“异步”ajax 会强制服务器“等待”上一个 AJAX 请求完成,然后再处理下一个 AJAX 请求。这会复制您想要的行为。
关于javascript - 在 jQuery 中有没有一种方法可以循环数组,以便在循环到下一个循环之前首先等待服务器的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9776673/