繁体   English   中英

jQuery:如何识别哪个XHR处理程序ajaxComplete()被触发了

[英]jQuery: How to identify which XHR handler ajaxComplete() was fired off for

我的JavaScript中有多个$.get()处理$.get() 当处理程序成功完成请求后,我希望能够运行特定的代码。 从jQuery的文档来看,以下是我正在寻找的内容:

$( document ).ajaxComplete(function() {
  $( ".log" ).text( "Triggered ajaxComplete handler." );
});

我这里的问题是,这将为每个$.get()处理程序触发。 如何确定要使用哪一个,以便采取更新用户界面所需的正确步骤?

我个人只是将所有jQuery AJAX方法包装在自己的函数中。 这样,我可以不依赖钩子而进行各种跟踪和缓存行为。 例如:

function AJAXLoad(method, data, callback) {
    var request = method + (new Date()).toString();
    console.log("Sending request " + request);
    $.ajax(method, { data: data, success: function(msg) {
        console.log("Request " + request + " completed.");
        callback(msg);
    }});
}

您将获得xhr对象和settings对象作为回调的参数,您可以使用它们来标识ajax方法

$(document).ajaxComplete(function (event, jqxhr, settings) {
    console.log(jqxhr)
    $(".log").text("Triggered ajaxComplete handler.");
});

但是,如果您想为特定的ajax请求注册一个回调并且可以访问该ajax请求的promise对象,则可以使用.always()回调,例如

var promise = $.post('/echo/json/', {});//or $.ajax() etc
promise.always(function(){
    //do something
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM