PDA

View Full Version : سوال: ایجاد وقفه زمانی در هنگام انجام نشدن درخواستهای ایجکس



idocsidocs
شنبه 17 دی 1390, 23:11 عصر
توی جی کوئری اگر درخواست ایجکس اجرا نشد، چطور می تونم یه وقفه زمانی ایجاد کنم و پس از اون بطور اتوماتیک مجددا درخواست اجرا بشه؟

در زمان وقفه، چطور باید به کاربر اطلاع بدم که درخواست داره بصورت اتوماتیک مجددا اجرا می شه؟

L u k e
شنبه 17 دی 1390, 23:26 عصر
یعنی چی درخواست اجرا نشد ؟ یعنی ارور داد ؟
خوب تابع ajax یه ورودی داره به اسم onerror یا همچین چیزی که وقتی ارور می ده اون اجرا می شه حالا توی اون می یای اجکس رو دوباره Send می کنی
واسه ایجاد وقفه هم درباره استفاده از توابع setTimeOut و setInterval جستجو کن

idocsidocs
شنبه 17 دی 1390, 23:55 عصر
یعنی ارور داد ؟منظورم همینه.

خوب تابع ajax یه ورودی داره به اسم onerror یا همچین چیزی که وقتی ارور می ده اون اجرا می شه حالا توی اون می یای اجکس رو دوباره Send می کنی امکانش هست که یه نمونه کد ارائه بدید؟

mehdi.mousavi
شنبه 17 دی 1390, 23:58 عصر
سلام.
روش صحیح برای انجام اینکار، استفاده از کد زیر در error handler مربوطه هستش:

$.ajax(this);

در این مقاله (http://zeroedandnoughted.com/defensive-ajax-and-ajax-retries-in-jquery/)، به این روش اشاره شده.

موفق باشید.

idocsidocs
یک شنبه 18 دی 1390, 00:37 صبح
روش صحیح برای انجام اینکار، استفاده از کد زیر در error handler مربوطه هستش:
اگر بخوایم برای هر تابع ajax یه کد خطا یابی بنویسیم هم وقت گیره و هم حجم فایل js رو افزایش می ده.

بنظرتون استفاده از یه تابع مثل تابع زیر بهتر نیست؟

$.ajaxSetup({
error:function(x, e){
if(x.status==0)
alert('شما به اینترنت متصل نیستید. اتصال اینترنت خود را چک کنید');
else if(x.status==404)
alert('آدرس درخواست شده پیدا نشد');
else if(x.status==500)
alert('خطای داخلی سرور');
else if(e=='parsererror')
alert('خطا در ساختار داده بازگشتی - Parsing JSON Request failed');
else if(e=='timeout')
alert('زمان زیادی گذشت و سرور پاسخ نداد. لطفا مجددا تلاش کنید');
else
alert('برنامه با خطا مواجه شد\n'+x.responseText);
}
});


البته نمی دونم که توی این روش اگر چند تابع با هم اجرا بشن و یکیشون ارور داد، چه اتفاقی برای سایر توابع میافته؟