【发布时间】:2014-03-06 01:57:03
【问题描述】:
我遇到了多个 ajax 函数的问题,其中 second ajax 帖子的 beforeSend 在 first ajax 的 complete 函数之前执行。 p>
我在发送前添加到占位符的加载类适用于第一个 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 的 sn-p,它检查并启动另一个 ajax 请求。
<script type="text/javascript">//<!--
$(document).ready(function() {
$('#restart').val(-1)
$('#ajaxSubmit').click();
});
//--></script>
【问题讨论】:
标签: javascript jquery ajax recursion