我有一个关于多个ajax函数的问题,在第二个ajax post的beforeSend
函数执行之前,第一个ajax的complete
函数已经执行了。
我在发送之前添加到占位符中的加载类适用于第一个ajax调用。但是,第一个ajax请求完成后不久,该类别被删除,并且不再附加到第二次及更多次调用中(请记住递归调用)。
调试时显示第二个ajax调用的beforeSend
函数首先被调用,第一个ajax调用的complete
函数稍后才被调用。这很明显,因为从第一个ajax调用插入页面的返回数据开始第二个调用。
简而言之,它混乱了。 有没有办法解决这个问题?
函数代码如下:
function AjaxSendForm(url, placeholder, form, append) {
var data = $(form).serialize();
append = (append === undefined ? false : true); // whatever, it will evaluate to true or false only
$.ajax({
type: 'POST',
url: url,
data: data,
beforeSend: function() {
// setting a timeout
$(placeholder).addClass('loading');
},
success: function(data) {
if (append) {
$(placeholder).append(data);
} else {
$(placeholder).html(data);
}
},
error: function(xhr) { // if error occured
alert("Error occured.please try again");
$(placeholder).append(xhr.statusText + xhr.responseText);
$(placeholder).removeClass('loading');
},
complete: function() {
$(placeholder).removeClass('loading');
},
dataType: 'html'
});
}
而数据包含以下片段的javascript/jquery代码,该代码检查并启动另一个ajax请求。
<script type="text/javascript">//<!--
$(document).ready(function() {
$('#restart').val(-1)
$('#ajaxSubmit').click();
});
//--></script>