我试图迭代检查复选框的ID(包含一个URL)。对于每个复选框,它都生成一个AJAX-get,它对数据库执行特定的操作。这是有效的,但是并不是所有AJAX-get似乎都被执行了(重定向执行得太快了)。
正如建议的那样,我试图使用‘$.. As’,但是,这似乎不起作用。我得到了一个“缺失”的参数列表,这肯定是在我推动ajax-get的部分中生成的。
这是正确的方式还是我应该尝试另一种方法?
$("#marksolved").click(function () {
var ajaxrequests = [];
// Loop through checkboxes.
$('input:checked').each(function () {
// Each id of a checkbox contains an URL.
var markurl = $(this).attr('id');
// Do the request.
ajaxrequests.push($.ajax({
method: 'GET',
url: markurl,
cache: false
});
});
// Check if all requests have completed.
$.when.apply($, ajaxrequests).then(function () {
// All requests have completed. An ajax-redirect will eventually take place too fast...
alert('All actions done!');
});
});
发布于 2013-08-27 19:51:10
我得到了一个“缺失”的参数列表,这肯定是在我推动ajax-get的部分中生成的。
ajaxrequests.push($.ajax({
method: 'GET',
url: markurl,
cache: false
});
应:
ajaxrequests.push($.ajax({
method: 'GET',
url: markurl,
cache: false
}));
它缺少了一个)
,就像错误说的那样。
附带注意:将所有请求合并成一个批处理请求可能会更有效,而不是每个复选框都有一个请求。
发布于 2013-08-27 19:53:41
您可以使用$.ajaxStop()
在所有ajax请求结束时引发事件,或者在所有请求完成时使用$.ajaxComplete()
。
发布于 2013-08-27 19:50:14
尝试将ajax异步选项设置为false。
$.ajax({
method:'GET',
url: markurl,
cache:false,
async: false
});
https://stackoverflow.com/questions/18474133
复制相似问题