我已经有3-4次ajax调用了。
对于其中一个调用,我想触发一个全局ajaxSend
事件的函数。这个特定的ajax调用不一定是序列中的第一个或最后一个。似乎如果我将ajaxSend
事件附加到$(document)
,我的函数将每隔一次发生一次ajaxSend事件。这是我的代码的样子:
//ajax call one
$.ajax({
type: "POST",
url: myUrl,
data: myData
});
//ajax call two <- let's say I'd like to fire ajaxSpecificFunc() here
$.ajax({
type: "POST",
url: myUrl,
data: myData
});
//ajax call three
$.ajax({
type: "POST",
url: myUrl,
data: myData
});
function ajaxSpecificFunc(){
$(document).on("ajaxSend", function() {
//Some code that should only happen on ajaxSend but for only one ajax call
});
}
编辑:我知道ajax的global:false
属性,但不想使用它,因为这意味着我将来必须修改每个新的ajax调用以使ajaxSpecificFunc()
继续为一个特定的ajax电话开火
答案 0 :(得分:2)
您可以在beforeSend
中添加jQuery.ajax()
:
$.ajax({
type: "POST",
url: myUrl,
data: myData,
beforeSend: ajaxSpecificFunc
});
正如 A.Wolff 所述,如果我们调用此函数,它将为每个调用绑定ajaxsend
。相反,您可以删除它,只需执行以下特定操作:
function ajaxSpecificFunc(jqXHR, settings){
// you can work with the jqXhr and settings
}
答案 1 :(得分:1)
如果您无法将处理程序直接绑定到ajax调用,并且只想使用全局处理程序,那么您可以检查设置对象以查看ajax调用是否是您的目标,如果是,则调用您的东西< / p>
$(document).ajaxSend(function(event, jqXHR, settings) {
console.log('send', settings);
if (settings.url == 'myurl') {
//then do your stuff
}
})
注意:但这可能会成为一种矫枉过正的行为,您应该尝试针对您的ajax调用执行此操作