یکی از ویژگیهای مفید jQuery در هنگام توسعهی نرمافزارهای تحت وب، رویدادهای( event ) سراسری است. با تعریف این رویدادها میتوانید در هنگام هر فراخوانی ajax در هر بخش از نرمافزار، آگاه شوید و عملیات دلخواه مانند نمایش عبارت «loading» یا جلوگیری از بارگزاری مجدد صفحه یا هر عمل متناسب دیگر را به انجام برسانید
رویدادهای سراسری jQuery برای ajax عبارتند از:
.ajaxComplete()
فراخوانی در هنگام پایان عملیات درخواست ajax
مستندات در سایت اصلی
.ajaxError()
فراخوانی در هنگام رویداد خطا در درخواست ajax
مستندات در سایت اصلی
.ajaxSend()
فراخوانی در پیش از ارسال درخواست ajax
مستندات در سایت اصلی
.ajaxStart()
فراخوانی در هنگام نخستین درخواست ajax
مستندات در سایت اصلی
.ajaxStop()
فراخوانی در هنگام به پایان رسیدن تمامی درخواستهای ajax
مستندات در سایت اصلی
.ajaxSuccess()
فراخوانی در پایان عملیات ajax
مستندات در سایت اصلی
این رویدادها میبایست به شیء document پیوست شوند تا jQuery بتواند در هنگام نیاز آنها را فراخوانی کند
در ادامه یک مثال برای نمایش پیام «در حال بارگزاری» به ازای هر درخواست را مشاهده میکنید:
<div id="loading"> در حال بارگزاری </div> <script> $( document ).ajaxStart(function() { $( "#loading" ).show(); } ); $( document ).ajaxComplete(function() { $( "#loading" ).hide(); } ); </script> <script> $.ajax( 'http://amib.ir', { success: function( data ) { alert( data ); } } ); </script> |
منبع: مستندات jQuery
سلام.
یک سوال برام پیش اومد…چطور می تونم محل قرارگیری #loading رو هم تنظیم کنم.
یعنی با توجه به اینکه کدام element اون رو فراخوانی کرده، محل لودینگ رو هم عوض کنم.
با سپس و قدردانی از به اشتراک گذاری دانشتون.
با سلام
لطفا به مستندات موجود در سایت jQuery مراجعه کنید
اولین پارامتری که به تابع رویداد ارسال میشود شیئی از نوع event است که عنصر هدف در صورت وجود از آن طریق قابل شناسایی است
شناسایی عنصر مورد نظر، بسته به مرورگر از طریق event.target یا event.srcElement ممکن است
البته نباید فراموش کنید که عنصر هدف، عنصری است که کاربر با آن در ارتباط بوده نه لزوما عنصری که مورد نظر شماست