这个问题很容易解决,但如果可以包装在全局ajax设置中会更好。
当我运行ajax调用时,我想在beforeSend选项中知道哪个元素/事件触发了ajax调用。
有没有一种简洁的方法来实现这一点?
beforeSend
回调函数有两个参数:当前 AJAX 调用使用的XMLHttpRequest
实例和相关设置。
因此,如果你在全局设置中定义了beforeSend
函数,并通过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
}
});
});
从这里开始
这些方法注册处理程序,当页面上的任何 AJAX 请求发生某些事件(例如初始化或完成)时调用。如果 jQuery.ajaxSetup()
中的全局属性为 true(默认情况下是这样),则每个 AJAX 请求都会触发全局事件。注意:无论全局属性的值如何,跨域脚本或 JSONP 请求永远不会触发全局事件。
.ajaxComplete() // initialize in for all ajax request and set event in jQuery.ajaxSetup()
.ajaxComplete() - 注册一个处理程序,在Ajax请求完成时调用。这是一个Ajax事件。