PDA

View Full Version : مدیریت خطا های اجاکسی



hamed_bostan
سه شنبه 25 دی 1386, 10:36 صبح
خیلی وقتا که از اجاکس استفاده میشه مثلا گریدویوو رو داخل updatePannel می ندازیم وقتی خطا میده یه خطای عجیب و غریب اجاکسی میده . چطور میشه این خطا ها رو کنترل کرد تا پیغام فارسی بده؟

Y@shar
سه شنبه 25 دی 1386, 14:01 عصر
امتحان کردی با هندل حل نمی شه ؟
اگه نشد متن خطا ی که واست میاد اینجا بزار تا راحتر بشه راهنمائیت کرد . ولی قالب خطا های آجاکس رو با تنظیمات در Web.config میشه حل کرد ...

hamed_bostan
سه شنبه 25 دی 1386, 15:18 عصر
من از پیغام خطا متوجه می شم خطا چیه اما می خوام این خطای کلاینتی و جاوا اسکریپتی رو نده و لی با try catch بازم خطا رو با alert نشون میده

hamed_bostan
جمعه 28 دی 1386, 11:13 صبح
کسی نمیدونه چطور میشه جلوی نمایش این خطا ها رو موقع رخ دادنشون گرفت

Behrouz_Rad
جمعه 28 دی 1386, 11:57 صبح
درست میگی.
این به ساختار داخلی MS AJAX بر می گرده که هر خطایی رو به شکل پیش فرض با alert نمایش میده.
برای حل این مشکل می تونی کلاس EndRequestEventArgs رو ایمپلمنت کنی.
یک div ایجاد کن و visibility اون رو در ابتدا برابر با hidden تنظیم کن.
حالا دقیقا به همون شکلی که برای یک HttpHandler یا HttpModule روالی تعریف می کنی تا در BeginRequest و EndRequest فراخوانی بشن، MS AJAX هم این رو روال رو داره.
به نمونه ای که در ذیل نوشتم دقت کن:
مثلا:


Sys.Application.add_load(onAppLoad);

function onAppLoad()
{
Sys.WebForms.PageRequestManager.getInstance().add_ endRequest(EndRequest);
Sys.WebForms.PageRequestManager.getInstance().add_ beginRequest(BeginRequest);
}

function BeginRequest(sender, args) {
if (document.getElementById('ErrorDisplay').style.vis ibility == "visible")
document.getElementById('ErrorDisplay').style.visi bility = "hidden";
}

function EndRequest(sender, args) {
if (args.get_error() != undefined)
{
document.getElementById('ErrorDisplay').style.visi bility = "visible";
args.set_errorHandled(true);
}
}

خط ;(args.set_errorHandled(true در روال EndRequest خیلی مهم هست.
به پارامتر set_errorHandled حتما باید true رو پاس بدی تا بدین طریق به AJAX بفهمونی که خطا رو خودت هندل کردی تا alert نمایش داده نشه.

موفق باشید.