针对特定ajax调用的全局$.ajax事件的触发器函数
Trigger function on a global $.ajax event for a specific ajax call
我有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调用
您可以在jQuery.ajax()
:中添加beforeSend
$.ajax({
type: "POST",
url: myUrl,
data: myData,
beforeSend: ajaxSpecificFunc
});
正如A.Wolff所指出的,通过这种方式,如果我们调用此函数,它将为每个调用绑定ajaxsend
。相反,你可以删除它,只做特定的事情,比如:
function ajaxSpecificFunc(jqXHR, settings){
// you can work with the jqXhr and settings
}
如果你不能将处理程序直接绑定到ajax调用,并且只想使用全局处理程序,那么你可以检查设置对象,看看ajax调用是否是你的目标,如果是,那么调用你的东西
$(document).ajaxSend(function(event, jqXHR, settings) {
console.log('send', settings);
if (settings.url == 'myurl') {
//then do your stuff
}
})
注意:但这可能有些过头了,您应该尝试针对您的ajax调用
相关文章:
- jQuery绑定了没有DOM元素的AJAX事件
- Asp.net Ajax事件句柄如何与DOM事件协同工作
- jQuery——更改SELECT中的值不会触发AJAX事件
- IE 的行为与 jQuery change/ajax 事件不一致
- 当开机自检失败时,调用哪种类型的 AJAX 事件
- 如何在 AJAX 事件完成之前暂停提交事件
- jQuery Ajax 事件绑定
- jQuery全局Ajax事件处理程序的用例
- 捕获无输入字段的按键ajax事件
- HTML拖放OnDrop Ajax事件
- 针对特定ajax调用的全局$.ajax事件的触发器函数
- <李>ajax[事件委派问题]后点击功能不起作用
- Ajax事件只工作一次
- Ajax事件处理程序不更新变量
- jQuery.AngularJS中的ajaxStart等效函数| AngularJS中的Ajax事件处理程序
- 调用jQuery ajaxSuccess(或任何全局AJAX事件),即使本地成功(或任何本地AJAX事件)抛出错误
- 如何创建脊柱模型没有自动转发ajax事件到服务器的脊柱
- 是否可以用ajax事件显示php内容?
- 在Rails 4上没有从设计登录表单接收ajax事件
- 可以一个jQuery ajaxSuccess函数通知在另一个(javascript)文件的AJAX事件?如果是这样,我做