我正在使用 jQuery 向 PHP 文件发送一些“针对每个选中的复选框”请求。
如何延迟 jQuery 中的请求(例如每隔一个请求)到 PHP 文件?
脚本同时发送所有请求。
var checked = []
$("input[name='checkbox[]']:checked").each(function (){
checked.push(parseInt($(this).val()));
//console.log($(this).val());
var id = $(this).val();
if (!!window.EventSource) {
var source = new EventSource("request.php?id="+id+"");
source.addEventListener('message', function(e) {
var data = JSON.parse(e.data);
var entry = data.entry;
$("#status_"+id+"").html(entry);
this.close();
return;
}, false);
}
});
最佳答案
第一个解决方案:
您可以使用setInterval()来做到这一点
$("input[name='checkbox[]']:checked").each(function (){
var that = $(this); // reference to each checkbox
setInterval(function(){ // set function to be executed after delay
checked.push(parseInt(that.val()));
//console.log(that.val());
var id = that.val()
...
}, 5000); //set the delay
});
这将使每次迭代延迟 5 秒。
但在这里,您必须在使用 setInterval 函数之前记住每个复选框,因此请提取 $(this)
,如上面的示例所示。
第二种解决方案:
您还可以查看 when()来自 JQuery 的方法。等待每个 Ajax 调用完成。这可能会更有效。
因此,您可以将复选框分成多个 block ,并同时处理每个 block ,然后调用另一个 block 。这样您就可以更快地完成所有请求,而无需同时抛出所有内容。
关于jquery - 如何在 jQuery 中延迟请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49221561/