آبجی
14th February 2010, 02:12 AM
در فریمورک AJAX مایکروسافت به طور پیش فرض اگر خطایی رخ بده اون خطا با alert به کاربر نمایش داده میشه.
برای حل این مشکل می تونید کلاس EndRequestEventArgs رو ایمپلمنت کنید.
یک div مثلا با آی دی ErrorDisplay ایجاد کنید و 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 .visibility == “visible”)
document.getElementById(’ErrorDisplay’).style. visibility = “hidden”;
}
function EndRequest(sender, args) {
if (args.get_error() != undefined)
{
document.getElementById(’ErrorDisplay’).style. visibility = “visible”;
args.set_errorHandled(true);
}
}
خط ;(args.set_errorHandled(true در روال EndRequest خیلی مهم هست.
به پارامتر set_errorHandled حتما باید true رو پاس بدید تا بدین طریق به AJAX بفهمونید که خطا رو خودتون هندل کردید تا alert نمایش داده نشه.
برای حل این مشکل می تونید کلاس EndRequestEventArgs رو ایمپلمنت کنید.
یک div مثلا با آی دی ErrorDisplay ایجاد کنید و 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 .visibility == “visible”)
document.getElementById(’ErrorDisplay’).style. visibility = “hidden”;
}
function EndRequest(sender, args) {
if (args.get_error() != undefined)
{
document.getElementById(’ErrorDisplay’).style. visibility = “visible”;
args.set_errorHandled(true);
}
}
خط ;(args.set_errorHandled(true در روال EndRequest خیلی مهم هست.
به پارامتر set_errorHandled حتما باید true رو پاس بدید تا بدین طریق به AJAX بفهمونید که خطا رو خودتون هندل کردید تا alert نمایش داده نشه.