DDN 推荐给 AjaxPro.net 初/中级用户的一种简单实用的 AjaxPro 错误/调试 处理方式
A. 需求说明
发现有不少网友在用 AjaxPro,看大家提供的代码示例,基本上都没有进行错误处理,
甚至很多朋友都不知道,对于 AjaxPro 返回的响应结果对象有一个 error 属性表示是否发生了错误。
AjaxPro 服务端采取基于异常的处理方式,假如调用发生异常,
返回的 error 属性包含了该异常( Exception 对象)的相关信息,包括错误信息,堆栈信息,引发异常的方法和对象。
这里提供自己实际使用 AjaxPro 中对于错误处理实用函数,通过一个窗口级的自定义变量,可以简单的实现
Debug 和 Release 版本切换。Debug 版本显示服务器端详细异常错误,Release 版本显示自定义信息。
B. 如何实现
只有一个函数: function showAjaxProError(error, customMessage)
// defines a variable indicating the application is under debug version
// comments the line out when releasing the application
// if(!window.AjaxProDEBUG) { window.AjaxProDEBUG = true; }
function showAjaxProError(error, customMessage)
{
if(!window.AjaxProDEBUG) {
var msg = !customMessage ? error.Message : customMessage;
alert( "系统错误\n\n " + msg);
} else {
var win = window.open( "AjaxProError ", " ");
var doc = win.document;
doc.write( " <html> <head> <title> AjaxProError: ")
doc.write(error.Type);
doc.write( " </title> </head> <body> <div> <h3> ");
doc.write( "AjaxPro 调用发生未处理的异常 ");
doc.write( " </h3> ");
doc.write( " <pre> ");
doc.write( "Type " + ":\n " + error.Type + "\n "); // 异常类型
doc.write( "Message " + ":\n " + error.Message + "\n "); // 异常信息
doc.write( "Stack " + ":\n " + error.Stack + "\n "); // 堆栈跟踪
doc.write( "TargetSite " + ":\n " + error.TargetSite + "\n "); // 引发异常的方法
doc.write( "Source " + ":\n " + error.Source + "\n "); // 导致异常的对象
doc.write( " </pre> ");
doc.write((new Date()).toLocaleString());
doc.write( " <br/> <br/> ");
doc.write( " <input type= 'button ' value= 'close ' onclick= 'window.close() ' /> ");
doc.write( " </div> ");
doc.close();
}
return false;
}
C. 如何使用
function displayServerDateTime() {
var res = AjaxProSample.GetServerDateTime2(document.getElementById( "chkGenError ").checked);
if(res.error) return showAjaxProError(res.error);
alert( "DateTime from Web Server is " + res.value.toLocaleString());
}
function showServerDateTime()
{
var callback = function(res) {
if(res.error) return showAjaxProError(res.error);
var spnServerTime = document.getElementById( "spnServerTime ");
spnServerTime.innerHTML = res.value.toLocaleString();
}
AjaxProSample.GetServerDateTime(callback);
}
D. 更多信息
完整示例及下载链接:
一种简单实用的 AjaxPro 错误处理方式
http://www.cnblogs.com/Jinglecat/archive/2007/07/14/817812.html
E. 谢谢大家
不管如何,请多多拍砖;
如果刚好适合你的需求,请收藏之;
Good Luck!
[解决办法]
支持分享帖~
[解决办法]
jfjf
[解决办法]
xiexie
[解决办法]
支持分享帖~
[解决办法]
mark
[解决办法]
JF兼收藏
[解决办法]
感谢无私分享!
[解决办法]
教学贴 支持
------解决方案--------------------
顶楼主 。顺便JF
[解决办法]
不错,AJAXPRO的调试确实是个问题
[解决办法]
好东西,谢谢
[解决办法]
AJAXPRO的调试确实是个问题