Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:如何确定为哪个XHR处理程序启动了ajaxComplete()_Javascript_Jquery_Xmlhttprequest - Fatal编程技术网

Javascript jQuery:如何确定为哪个XHR处理程序启动了ajaxComplete()

Javascript jQuery:如何确定为哪个XHR处理程序启动了ajaxComplete(),javascript,jquery,xmlhttprequest,Javascript,Jquery,Xmlhttprequest,我的JavaScript中有多个$.get()处理程序。我希望能够在处理程序成功完成其请求时运行特定代码。从jQuery的文档来看,我想要的是: $( document ).ajaxComplete(function() { $( ".log" ).text( "Triggered ajaxComplete handler." ); }); 我这里的问题是,对于每个$.get()处理程序,都会触发此操作。我怎样才能确定它是为哪一个开发的,这样我就可以采取更新用户界面所需的正确步骤?就我个人

我的JavaScript中有多个
$.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
})