Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Verwendung der jQuery.ajaxComplete()-Funktion

Detaillierte Erläuterung der Verwendung der jQuery.ajaxComplete()-Funktion

巴扎黑
巴扎黑Original
2017-07-03 10:40:061786Durchsuche

Die Funktion

ajaxComplete() wird verwendet, um die Rückruffunktion so festzulegen, dass sie ausgeführt wird, wenn die AJAX-Anfrage abgeschlossen ist (ob erfolgreich oder fehlgeschlagen).

Dies ist eine globale AJAX-Ereignisfunktion, die verwendet wird, um die Ereignisverarbeitungsfunktion an das ajaxComplete-Ereignis aller AJAX-Anfragen zu binden. Wenn die AJAX-Anfrage abgeschlossen ist (ob erfolgreich oder fehlgeschlagen), wird das ajaxComplete-Ereignis ausgelöst und der gebundene Ereignishandler wird ausgeführt.

Diese Funktion muss für die jQuery-Objektinstanz aufgerufen werden und ajaxComplete() bindet eine Handlerfunktion an das ajaxComplete-Ereignis jedes übereinstimmenden Elements. Wenn die AJAX-Anfrage abgeschlossen ist, werden die Verarbeitungsfunktionen für alle übereinstimmenden Elemente ausgelöst und ausgeführt. Dies innerhalb des Ereignishandlers zeigt auf das aktuelle DOM-Element.

Sie können diese Funktion mehrmals für dasselbe Element aufrufen, um mehrere Ereignishandler zu binden. Wenn das ajaxComplete-Ereignis ausgelöst wird, führt jQuery die gebundenen Ereignisverarbeitungsfunktionen in der Reihenfolge der Bindung aus.

Ab jQuery 1.8 kann diese Funktion nur Handler an das ajaxComplete-Ereignis des document-Objekts binden. Ereignishandler, die an andere Elemente gebunden sind, funktionieren nicht.

Wenn Sie den Optionsparameter global in jQuery.ajax() oder jQuery.ajaxSetup() auf false setzen, können Sie verhindern, dass die AJAX-Anfrage globale AJAX-Ereignisse auslöst.

Diese Funktion gehört zum jQuery-Objekt (Instanz).

Syntax

Diese Funktion ist neu in jQuery 1.0.

jQueryObject.ajaxComplete( handler)

Parameter

Parameterbeschreibung

handler Funktionstyp muss bei diesem Ereignis ausgeführt werden Die Ereignisbehandlungsfunktion wird ausgelöst.

Der Callback-Funktionshandler verfügt über drei Parameter: Einer ist das Event-Objekt, das das aktuelle Ereignis darstellt, der andere ist das jqXHR-Objekt, das die aktuelle AJAX-Anfrage sendet, und der dritte sind alle für diese AJAX-Anfrage festgelegten Parameteroptionen ( Objekt einschließlich Standardparameteroptionen, die nicht angegeben werden müssen).

Das jqXHR-Objekt ist ein XMLHttpRequest-ähnliches Objekt, das von jQuery gekapselt wird.

Rückgabewert

ajaxComplete()Der Rückgabewert der Funktion ist vom Typ jQuery und gibt das aktuelle jQuery-Objekt selbst zurück.

Beispiel und Beschreibung

Bitte beachten Sie den folgenden HTML-Beispielcode:

<div id="content1">CodePlayer</div>
<div id="content2">专注于编程开发技术分享</div>
<div id="content3">http://www.365mini.com</div>

Im Folgenden finden Sie den jQuery-Beispielcode für die Funktion ajaxComplete() zur Veranschaulichung ajaxComplete()-Funktion Spezifische Verwendung:

Bitte führen Sie den folgenden Code basierend auf jQuery-Versionen vor 1.8 aus (bitte beachten Sie, dass die Ereignisverarbeitungsfunktion durch ajaxComplete() und die Rückruffunktion durch die vollständige Option von $.ajax festgelegt wird (), ihre Parameter sind unterschiedlich).

// 当前 jQuery版本:1.7.2 (必须是1.8之前的版本)
$("div").ajaxComplete( function(event, jqXHR, options){
    alert("处理函数1: 当前元素的id为" + this.id + ",请求的url为" + options.url);
} );
$("div").ajaxComplete( function(event, jqXHR, options){
    alert("处理函数2:请求方式为" + options.type);
} );
// 执行该AJAX请求,会弹出6次对话框
// 因为当前页面有3个div元素,我们为每个div元素绑定了2个事件处理函数
$.ajax( {
    url: "index.html"
} );
// 执行该AJAX请求,会弹出7次对话框
// 因为$.ajax()自己通过complete选项绑定了一个ajaxComplete事件处理函数,这个事件处理函数是绑定在document上的,document只有一个,因此只执行一次
// 当前页面还有3个div元素,我们为每个div元素绑定了2个事件处理函数
// 因此总共弹出7次对话框
$.ajax( {
    url: "myurl" ,
    complete: function(jqXHR, textStatus){
        // jqXHR 是经过jQuery封装的XMLHttpRequest对象
        // textStatus 可能为:null、&#39;success&#39;、 &#39;notmodified&#39;、 &#39;error&#39;、 &#39;timeout&#39;、 &#39;abort&#39;或&#39;parsererror&#39;等
        
       alert( "ajax()" );
    }
} );

Wenn die aktuelle jQuery Version 1.8 und höher ist, öffnet der obige jQuery-Code das Dialogfeld insgesamt nur einmal. Denn ab jQuery 1.8 muss die Handlerfunktion des ajaxComplete-Ereignisses an das Dokumentobjekt gebunden werden, damit sie wirksam wird.

Daher sollten wir, unabhängig von der aktuellen Version von jQuery, die Handlerfunktion des ajaxComplete-Ereignisses an das Dokumentobjekt binden, wenn keine besonderen Anforderungen bestehen.

$(document).ajaxComplete( function(event, jqXHR, options){
    alert("处理函数1:请求的url为" + options.url);
} );
$(document).ajaxComplete( function(event, jqXHR, options){
    alert("处理函数2:请求方式为" + options.type);
} );
// 执行该AJAX请求,会弹出2次对话框
// 因为document对象上绑定了2个事件处理函数
$.ajax( {
    url: "index.html"
//  , global: false // 可以禁止触发全局的Ajax事件
} );
// 执行该AJAX请求,会弹出3次对话框
// 因为$.ajax()自己通过complete选项绑定了一个局部的ajaxComplete事件处理函数,它也在document对象上,会执行一次
// 我们还通过ajaxComplete()额外绑定了两个事件处理函数,会再弹出2次
$.ajax( {
    url: "myurl" ,
    complete: function(jqXHR, textStatus){
        // jqXHR 是经过jQuery封装的XMLHttpRequest对象
        // textStatus 可能为:null、&#39;success&#39;、 &#39;notmodified&#39;、 &#39;error&#39;、 &#39;timeout&#39;、 &#39;abort&#39;或&#39;parsererror&#39;等
       alert( "ajax()" );
    }
//  , global: false // 可以禁止触发全局的Ajax事件
} );

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung der jQuery.ajaxComplete()-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn