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

时间:2011-10-18 18:50:12

标签: ajax jquery

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

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

这样做有简洁的方法吗?

2 个答案:

答案 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)

从这里开始

Global Ajax Event Handlers

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

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

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