ホームページ  >  記事  >  ウェブフロントエンド  >  jQuery.ajaxComplete()関数の使い方の詳しい説明

jQuery.ajaxComplete()関数の使い方の詳しい説明

巴扎黑
巴扎黑オリジナル
2017-07-03 10:40:061832ブラウズ

ajaxComplete() 関数は、AJAX リクエストが完了したときに (成功または失敗にかかわらず) コールバック関数 が実行されるように設定するために使用されます。

これはグローバル AJAX イベント関数であり、イベント処理 関数をすべての AJAX リクエストの ajaxComplete イベントにバインドするために使用されます。 AJAX リクエストが完了すると (成功または失敗に関係なく)、ajaxComplete イベントがトリガーされ、バインドされたイベント ハンドラーが実行されます。

この関数は jQuery オブジェクト インスタンスで呼び出す必要があり、ajaxComplete() はハンドラー関数を一致する各要素の ajaxComplete イベントにバインドします。 AJAX リクエストが完了すると、一致するすべての要素の処理関数がトリガーされて実行されます。イベント ハンドラー内のこれは、現在の DOM 要素を指します。

同じ要素でこの関数を複数回呼び出して、複数のイベント ハンドラーをバインドできます。 ajaxComplete イベントがトリガーされると、jQuery はバインドされたイベント処理関数をバインドの順序で実行します。

jQuery 1.8 以降、この関数はハンドラーを document オブジェクトの ajaxComplete イベントにのみバインドできます。他の要素にバインドされたイベント ハンドラーは機能しません。

jQuery.ajax() または jQuery.ajaxSetup() でオプション パラメーター global を false に設定すると、AJAX リクエストがグローバル AJAX イベントをトリガーするのを防ぐことができます。

この関数はjQueryオブジェクト(インスタンス)に属します。

構文

この関数は jQuery 1.0 の新しい関数です。

jQueryObject.ajaxComplete(handler)

Parameters

パラメータの説明

handler 関数の種類 このイベントがトリガーされたときに実行する必要があるイベント ハンドラー関数。

コールバック関数ハンドラーには 3 つのパラメーターがあります。1 つは現在のイベントを表す Event オブジェクト、もう 1 つは現在の AJAX リクエストを送信する jqXHR オブジェクト、3 つ目は、この AJAX リクエストに設定されたすべてのパラメーター オプション (指定する必要はありません) オブジェクト オブジェクト (デフォルトのパラメーター オプション付き)。

jqXHR オブジェクトは、jQuery によってカプセル化された XMLHttpRequest に似たオブジェクトです。

戻り値

ajaxComplete()関数の戻り値はjQuery型で、現在のjQueryオブジェクトそのものを返します。

例と説明

次の HTML サンプル コードを参照してください:

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

以下は、ajaxComplete() 関数の具体的な使用法を示す、ajaxComplete() 関数に関連する jQuery サンプル コードです:

次のコード実行する jQuery は 1.8 より前のバージョンに基づいています (ajaxComplete() を通じて設定されたイベント ハンドラー関数のパラメーターと $.ajax() の complete オプションを通じて設定されたコールバック関数のパラメーターが異なることに注意してください)。

// 当前 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()" );
    }
} );

現在の jQuery がバージョン 1.8 以降の場合、上記の jQuery コードは合計で 1 回だけダイアログ ボックスをポップアップします。 jQuery 1.8 以降では、ajaxComplete イベントのハンドラー関数を有効にするためにドキュメント オブジェクトにバインドする必要があるためです。

したがって、現在のjQueryのバージョンに関係なく、特別な必要がなければ、ajaxCompleteイベントのハンドラー関数をドキュメントオブジェクトにバインドする必要があります。

りー

以上がjQuery.ajaxComplete()関数の使い方の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。