jquery ajax – 全局设置。 是否有可能知道哪个事件/元素触发了ajax调用?

这很容易解决,但如果它被包装在全局ajax设置中会很好

当我运行ajax调用时,我想知道哪个元素/事件触发了beforeSend选项中的ajax调用。

这样做有简洁的方法吗?

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 } }); }); 

从这里开始

全局Ajax事件处理程序

这些方法注册在页面上的任何AJAX请求发生某些事件(例如初始化或完成)时调用的处理程序。 如果jQuery.ajaxSetup()的全局属性为true,则默认情况下会对每个AJAX请求触发全局事件。 注意:无论global的值是什么,都不会为跨域脚本或JSONP请求触发全局事件。

 .ajaxComplete() // initialize in for all ajax request and set event in jQuery.ajaxSetup() 

.ajaxComplete() – 注册Ajax请求完成时要调用的处理程序。 这是一个Ajax事件。