jQuery AJAX - 全局设置。是否可能知道触发 AJAX 调用的事件/元素?

11

这个问题很容易解决,但如果可以包装在全局ajax设置中会更好。

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

有没有一种简洁的方法来实现这一点?

2个回答

12

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

0

从这里开始

全局 Ajax 事件处理程序

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接