同时运行两个ajax,其中一个ajax调用使用done



我正在阅读stackoverlow,发现有很多关于这个标签的问题,我想同时运行两段代码

使用$when

我的代码看起来像这样,但不确定如何重写它,请指导

$(document).ready(function() {
$(document).on('click', '#Button',function (e) {

e.preventDefault();
var isExcel = document.getElementById('Excel').checked ? 1 : 0;
$.ajax({
url: "page1",
cache: false,
data : $('#form').serialize(),
method: "post",
success: function(response){
$('.mytable').show();
$('.mytable').html(response);
}
}).done(function(data) {

$("#datatables").DataTable({
"bFilter": true,
"serverSide": true,
"deferRender":true,
"processing": true,
"ajax": {
"url" : "/data.cfm",
"type" : 'post'
}
}
});
});

if(isExcel) {
$.ajax({ // 2nd call
url: "/excel.cfm",
cache: false,
data : $('#form').serialize(),
method: "post",
success: function(response){
alert('done');
}
});
}
});
});

请指导我如何使它工作使用时,因为ajax调用数据表将带来的结果回来,excel可能需要一段时间

我想,当我点击点击按钮,它去到ajax调用首先带来的数据表,并开始显示它。如果excel复选框被选中,它会调用另一个jquery ajax从excel中的不同代码生成文件,但是数据表应该是可见的并且处于运行状态。

如果您希望Excel部分在数据表返回后运行,您应该在数据表调用的done回调中添加Excel请求:

$(document).ready(function() {
$(document).on('click', '#Button',function (e) {

e.preventDefault();
var isExcel = document.getElementById('Excel').checked ? 1 : 0;
$.ajax({
url: "page1",
cache: false,
data : $('#form').serialize(),
method: "post",
success: function(response){
$('.mytable').show();
$('.mytable').html(response);
}
}).done(function(data) {

$("#datatables").DataTable({
"bFilter": true,
"serverSide": true,
"deferRender":true,
"processing": true,
"ajax": {
"url" : "/data.cfm",
"type" : 'post'
}
}
});
if(isExcel) {                                 // moved here
$.ajax({ // 2nd call
url: "/excel.cfm",
cache: false,
data : $('#form').serialize(),
method: "post",
success: function(response){
alert('done');
}
});
}
});
// removed excel request from here
});
});

最新更新