التابع ‎‎.ajaxComplete()‎‎‎ في jQuery

من موسوعة حسوب


‎.ajaxComplete( handler )‎

القيمة المعادة

كائن jQuery.

الوصف

يُستخدَم التّابع ‎.ajaxComplete()‎ لتسجيل مُعالِج الأحداث (Event handler) لاستدعائه عند اكتمال طلبات Ajax. يُعدُّ هذا التّابع حدثًا من أحداث Ajax.

‎.ajaxComplete( handler )‎

أضيفت في الإصدار: 1.0.

handler

دالة على الشكل ‎Function( Event event, jqXHR jqXHR, PlainObject ajaxOptions )‎،وهي الدالة التي ستُستدعى.

حالما يكتمل تنفيذ طلب Ajax، تُطلَق jQuery الحدث ajaxComplete، وتُنفَّذ عندها كافّة مُعالجات الأحداث المُسجَّلة مع التّابع‎.ajaxComplete() ‎.

لمشاهدة مثال عملي عن هذا التّابع نُجهِّز طلب بسيط لتحميل Ajax:

<div class="trigger">Trigger</div>
<div class="result"></div>
<div class="log"></div>

أرفِق مُعالِج الحدث (event handler) إلى المستند:

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

نفذ الآن طلب Ajax باستخدام أي تابع jQuery:

$( ".trigger" ).click(function() {
  $( ".result" ).load( "ajax/test.html" );
});

عندما يضغط المستخدم على العنصر الذي يمتلك الصنف trigger ويكتمل تنفيذ طلب Ajax، ستُعرَض رسالة السّجل. تُستدعَى كافة مُعالِجات الحدث ajaxComplete عند اكتمال تنفيذ أي طلب Ajax، إن كنت تريد التفريق بين الطلبات فاستخدم المعاملات الممررة لمُعالِج الأحداث، ففي كل مرة يُنفَّذ فيها مُعالِج الحدث ajaxComplete يُمرِّر كائن الحدث، والكائن XMLHttpRequest، وكائن الإعدادات الذي استُخدِم في إنشاء الطّلب. بإمكاننا على سبيل المثال حصر الاستدعاء فقط من أجل الأحداث التي تتعامل مع روابط معينة:

$( document ).ajaxComplete(function( event, xhr, settings ) {
  if ( settings.url === "ajax/test.html" ) {
    $( ".log" ).text( "Triggered ajaxComplete handler. The result is " +
      xhr.responseText );
  }
});

ملاحظة: بإمكاننا الحصول على محتوى Ajax المُعاد عن طريق xhr.responseText.

ملاحظات إضافية

بدءًا من إصدار jQuery 1.9 أصبح إرفاق مُعالِجات الأحداث لأحداث Ajax العامة (jQuery global Ajax events) بالمستند إجباريًّا، بما في ذلك مُعالِجات الأحداث المُضافة عن طريق التّابع ‎.ajaxComplete()‎.

إن استدعينا التابع ‎$.ajax()‎ أو ‎$.ajaxSetup()‎ مع تعيين الخيار global إلى القيمة false، فلن يُنفَّذ التّابع ‎.ajaxComplete()‎.

أمثلة

إظهار رسالة عند اكتمال طلب Ajax:

$( document ).ajaxComplete(function( event, request, settings ) {
  $( "#msg" ).append( "<li>Request Complete.</li>" );
});

مصادر