【发布时间】:2016-07-03 08:02:39
【问题描述】:
我有下面的自动保存代码,但是我有很多 Ajax 请求同时触发的问题,我想等待 Ajax 请求直到第一个 Ajax 请求没有完成
window.submitting = false;
$('form#AddForm').submit(function() {
window.submitting = true;
});
var timeoutId;
$('form input, form textarea, form select').bind('input propertychange change', function() {
console.log('Change');
if (window.submitting)
return false;
clearTimeout(timeoutId);
timeoutId = setTimeout(function() {
// Runs 5 second (5000 ms)
autoSave();
}, 5000);
});
function autoSave() {
$.ajax({
type: "POST",
data: $('form#AddForm').serialize() + '&autosave=true',
beforeSend: function(xhr) {
// Let them know we are saving
console.log('Saving........');
},
success: function(data) {
var jqObj = jQuery(data); // Ajax call here.
var ProductId = jqObj.find("#ProductId").val();
var url = $(location).attr('href');
var split = url.split("add");
if (ProductId) {
history.pushState({}, null, split[0] + "add/" + ProductId);
$('#ProductId').val(ProductId);
$('form#AddForm').attr('action', '/dataproducts/add/' + ProductId);
}
},
});
}
【问题讨论】:
-
ajax 是异步的。你需要坚持运行它们吗?
-
一旦第一个 Ajax 请求完成,然后第二个 Ajax 请求运行。我需要在我的代码中使用 .finish() Jquery 或 .ajaxComplete() Jquery?
-
触发第二个ajax请求的代码在哪里,我在
setTimeout调用中只看到一个。