你正在使用
.success
和
done
,所以我删除了一个。两者都不需要。此外,为了让阅读/故障排除更容易,我将post ajax代码移到了它自己的函数中。我不知道你为什么给一个部门写信,然后又把它读回来,所以我留下了,但把它注释掉了。最后,我添加了一个简单的计数器来迭代后续的ajax调用,这样它就可以检测到什么时候一切都完成了。我偷的
idea from this post
.
$("#loader").show();
var url = $(this).attr("action");
var formData = new FormData($(this)[0]);
$(this).hide();
$.ajax({
url: "generateJson.php",
type: 'POST',
data: formData,
async: true,
cache: false,
contentType: false,
enctype: 'multipart/form-data',
processData: false,
error: function(xhr, desc, err) {
console.log("error");
}
}).done(function(data) {
$('#json').append(data); //content loads here
runPostAjax(data)
}),
error: function(xhr, desc, err) {
console.log("error: " + desc + " " + err);
}
});
function runPostAjax(data) {
//data = JSON.parse($("#json").val());
let done = data.length; // number of total requests
$.each(data, function(key, val) {
$.ajax({
type: "POST",
url: "/generateInvoice.php",
dataType: "html",
data: val,
success: function(data, status) {
if (data) {
$("#result").append(data)
done -= 1;
if (done == 0) {
$("#loader").hide();
$("#done").show();
}
} else {
console.log("Error");
}
})
}