我有一个页面上有很多复选框,我写了一个JS代码,为每个页面调用PHP页面,我想在调用完成后刷新页面.. 这是我的代码
$(".matchFrnds").each(function(){ //For each CheckBox
if($(this).is(':checked')){
var sendData= $(this).val();
$.post('Call to PHP Page',{sendData:sendData},function(data){
window.location.reload();
});
}
});
问题是页面在完成几个checbox后重新加载,因此如果有60个复选框,则在调用10个复选框后页面会重新加载。我也更改了window.location.reload();
的位置,但结果是一样的,我希望一旦完成所有复选框的调用,然后重新加载。
答案 0 :(得分:1)
您可以查看已完成的通话次数,然后重新加载
var boxes = $(".matchFrnds:checked").length;
var calls = 0;
$(".matchFrnds").each(function(){ //For each CheckBox
if($(this).is(':checked')){
var sendData= $(this).val();
$.post('Call to PHP Page',{sendData:sendData},function(data){
calls++;
if(calls >= boxes) {
window.location.reload();
}
});
}
});
答案 1 :(得分:0)
这很容易。
您只需设置一个计数器,并在最后一个计数器上调用reload()
想法是有另一个变量......
// Save the element to iterate in a variable
var matchFrnds = $(".matchFrnds"),
//and save its length too
length = matchFrnds.length;
//Iterate over it
matchFrnds.each(function() {
// modify the counter
--length;
if ($(this).is(":checked")) {
// do your things
$.post( ... , function(data) {
//do what you need to do with the data...
// ....
// ....
});
}
//and, if it's the last element
if (!length) {
// LAST ITERATION!
window.location.reload();
}
});
就是这样。
答案 2 :(得分:0)
您可以使用.ajaxStop-Event
答案 3 :(得分:0)
完成您的请求后,您可以尝试使用此功能:
location.reload();