这很容易解决,但如果它被包含在全局ajax设置中会很好
当我运行ajax调用时,我想知道哪个元素/事件触发了beforeSend选项中的ajax调用。
这样做有简洁的方法吗?
答案 0 :(得分:8)
beforeSend
回调有两个参数:XMLHTTPRequest
实例和当前AJAX调用使用的设置。
因此,如果您在context
选项中传递了触发元素和事件,即使您在全局设置中定义它们,beforeSend
也可以使用它们:
$.ajaxSetup({
beforeSend: function(xhr, settings) {
var element = settings.context.element;
var event = settings.context.event;
// Do something with 'element' and 'event'...
}
});
$("selector").click(function(e) {
$.ajax("url", {
// your settings,
context: {
element: this,
event: e
}
});
});
答案 1 :(得分:0)
从这里开始
这些方法注册在页面上的任何AJAX请求发生某些事件(例如初始化或完成)时调用的处理程序。如果jQuery.ajaxSetup()
中的全局属性为true,则默认情况下会对每个AJAX请求触发全局事件。注意:无论全局值是什么,都不会为跨域脚本或JSONP请求触发全局事件。
.ajaxComplete() // initialize in for all ajax request and set event in jQuery.ajaxSetup()
.ajaxComplete() - 注册Ajax请求完成时要调用的处理程序。这是一个Ajax事件。