是否有一个Javascript库来解析和打印作为JSON返回的.NET异常?

是否有一个Javascript库来解析和打印作为JSON返回的.NET异常?,javascript,asp.net,web-services,Javascript,Asp.net,Web Services,如果调用ASMX web服务时出现异常,web服务将返回如下内容: {"Message":"Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).","StackTrace":" at System.Guid.TryParseGuidWithNoStyle(String guidString, GuidResult& result)\r\n at System.Guid

如果调用ASMX web服务时出现异常,web服务将返回如下内容:

{"Message":"Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).","StackTrace":"   at System.Guid.TryParseGuidWithNoStyle(String guidString, GuidResult& result)\r\n   at System.Guid.TryParseGuid(String g, GuidStyles flags, GuidResult& result)\r\n   at System.Guid..ctor(String g)\r\n   at System.ComponentModel.GuidConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)\r\n   at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n   at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n   at System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionary`2 rawParams)\r\n   at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)\r\n   at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.FormatException"}

我希望在警报或jQuery对话框中显示此消息,但为了实现这一点,我希望将其打印出来。有没有为此目的而构建的JS库?

据我所知,没有库,但这应该可以让您开始。。。另存为.html文件,例如:

<html>
<head>
 <style type="text/css">
  /*Style it here*/
  .msgContainer
  {
   font-family:Arial;
   border:solid 1px black;
  }
  .msgTitle
  {
   background-color:#FBEC5D;
   height:30px;
   line-height:30px;
  }
  .msgBody
  {
   font-size:10pt;
   background-color:#E8E8E8;
  }
  .msgType
  {
   font-size:12pt;
   font-weight:bold;
   color:red;
  }
 </style>
 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
 <script type="text/javascript">
  //Document Ready: Everything inside this function fires after the page is loaded
  $(document).ready(function () {

   var prettyPrint = {
    EndingsToBreaks: function(str) {
     var br = '<br />';
     return str.replace( /\r\n|\r|\n/g, br );
    },

    DisplayError:function(error, divID){
     var $Dest = $('#' + divID);
     var _msg = this.EndingsToBreaks(error.Message);
     var _sTrace = this.EndingsToBreaks(error.StackTrace);
     var _sType = this.EndingsToBreaks(error.ExceptionType);
     $Dest.append("<div class='msgContainer' ><div class='msgTitle'><span class='msgType'>" + _sType + "</span>:" + _msg + "</div><div class='msgBody'>" +_sTrace+ "</div></div>");
    }
   }

   //Get your error Message
   var testError = {"Message":"Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).","StackTrace":"   at System.Guid.TryParseGuidWithNoStyle(String guidString, GuidResult& result)\r\n   at System.Guid.TryParseGuid(String g, GuidStyles flags, GuidResult& result)\r\n   at System.Guid..ctor(String g)\r\n   at System.ComponentModel.GuidConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)\r\n   at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n   at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n   at System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionary`2 rawParams)\r\n   at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)\r\n   at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.FormatException"}

   //Format & Style it...
   prettyPrint.DisplayError(testError, "dvMessage");
  });
 </script>
</head>
<body>
 <div id="dvMessage"></div>
</body>
</html>

/*在这里做风格*/
.msgContainer
{
字体系列:Arial;
边框:实心1px黑色;
}
.msgTitle
{
背景色:#FBEC5D;
高度:30px;
线高:30px;
}
msgBody先生
{
字号:10pt;
背景色:#E8E8E8;
}
.msgType
{
字号:12号;
字体大小:粗体;
颜色:红色;
}
//文档准备就绪:加载页面后,此函数中的所有内容都会激发
$(文档).ready(函数(){
变量预打印={
EndingsToBreaks:函数(str){
var br='
'; 返回str.replace(/\r\n |\r |\n/g,br); }, DisplayError:函数(错误,divID){ var$Dest=$(“#”+divID); var\u msg=this.EndingsToBreaks(error.Message); var _sTrace=this.EndingsToBreaks(error.StackTrace); var\u sType=this.EndingsToBreaks(error.ExceptionType); $Dest.append(“+”sType+“:“+”msg+“+”sTrace+”); } } //获取您的错误消息 var testError={“Message”:“Guid应该包含32位数字和4个破折号(xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。”,“StackTrace”:“在System.Guid.TryParseGuidWithNoStyle(字符串guidString,GuidResult和result)\r\n在System.Guid.TryParseGuid(字符串g,GuidStyles标志,GuidResult和result)\r\n在System.Guid....(字符串g)\r\n位于System.ComponentModel.GuidConverter.ConvertFrom(ITypeDescriptorContext上下文,CultureInfo区域性,对象值)\r\n位于System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(对象o,类型类型,JavaScriptSerializer序列化程序,布尔throwOnError,对象和convertedObject)\r\n位于System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(对象o,类型类型,JavaScriptSerializer序列化程序,布尔throwOnError,对象和convertedObject)\r\n位于System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionary`2 rawParams)\r\n位于System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(对象目标,IDictionary`2参数)\r\n位于System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext上下文,WebServiceMethodData,IDictionary`2 rawParams)\r\n位于System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext上下文,WebServiceMethodData methodData)”,“ExceptionType:“System.FormatException”} //格式和样式。。。 打印前显示错误(测试错误,“dvMessage”); });
据我所知,没有库,但这应该可以让您开始…另存为.html文件,例如:

<html>
<head>
 <style type="text/css">
  /*Style it here*/
  .msgContainer
  {
   font-family:Arial;
   border:solid 1px black;
  }
  .msgTitle
  {
   background-color:#FBEC5D;
   height:30px;
   line-height:30px;
  }
  .msgBody
  {
   font-size:10pt;
   background-color:#E8E8E8;
  }
  .msgType
  {
   font-size:12pt;
   font-weight:bold;
   color:red;
  }
 </style>
 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
 <script type="text/javascript">
  //Document Ready: Everything inside this function fires after the page is loaded
  $(document).ready(function () {

   var prettyPrint = {
    EndingsToBreaks: function(str) {
     var br = '<br />';
     return str.replace( /\r\n|\r|\n/g, br );
    },

    DisplayError:function(error, divID){
     var $Dest = $('#' + divID);
     var _msg = this.EndingsToBreaks(error.Message);
     var _sTrace = this.EndingsToBreaks(error.StackTrace);
     var _sType = this.EndingsToBreaks(error.ExceptionType);
     $Dest.append("<div class='msgContainer' ><div class='msgTitle'><span class='msgType'>" + _sType + "</span>:" + _msg + "</div><div class='msgBody'>" +_sTrace+ "</div></div>");
    }
   }

   //Get your error Message
   var testError = {"Message":"Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).","StackTrace":"   at System.Guid.TryParseGuidWithNoStyle(String guidString, GuidResult& result)\r\n   at System.Guid.TryParseGuid(String g, GuidStyles flags, GuidResult& result)\r\n   at System.Guid..ctor(String g)\r\n   at System.ComponentModel.GuidConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)\r\n   at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n   at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n   at System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionary`2 rawParams)\r\n   at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)\r\n   at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.FormatException"}

   //Format & Style it...
   prettyPrint.DisplayError(testError, "dvMessage");
  });
 </script>
</head>
<body>
 <div id="dvMessage"></div>
</body>
</html>

/*在这里做风格*/
.msgContainer
{
字体系列:Arial;
边框:实心1px黑色;
}
.msgTitle
{
背景色:#FBEC5D;
高度:30px;
线高:30px;
}
msgBody先生
{
字号:10pt;
背景色:#E8E8E8;
}
.msgType
{
字号:12号;
字体大小:粗体;
颜色:红色;
}
//文档准备就绪:加载页面后,此函数中的所有内容都会激发
$(文档).ready(函数(){
变量预打印={
EndingsToBreaks:函数(str){
var br='
'; 返回str.replace(/\r\n |\r |\n/g,br); }, DisplayError:函数(错误,divID){ var$Dest=$(“#”+divID); var\u msg=this.EndingsToBreaks(error.Message); var _sTrace=this.EndingsToBreaks(error.StackTrace); var\u sType=this.EndingsToBreaks(error.ExceptionType); $Dest.append(“+”sType+“:“+”msg+“+”sTrace+”); } } //获取您的错误消息 var testError={“Message”:“Guid应该包含32位数字和4个破折号(xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。”,“StackTrace”:“在System.Guid.TryParseGuidWithNoStyle(字符串guidString,GuidResult和result)\r\n在System.Guid.TryParseGuid(字符串g,GuidStyles标志,GuidResult和result)\r\n在System.Guid....(字符串g)\r\n位于System.ComponentModel.GuidConverter.ConvertFrom(ITypeDescriptorContext上下文,CultureInfo区域性,对象值)\r\n位于System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(对象o,类型类型,JavaScriptSerializer序列化程序,布尔throwOnError,对象和convertedObject)\r\n位于System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(对象o,类型类型,JavaScriptSerializer序列化程序,布尔throwOnError,对象和convertedObject)\r\n位于System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionary`2 rawParams)\r\n位于System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(对象目标,IDictionary`2参数)\r\n位于System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext上下文,WebServiceMethodData,IDictionary`2 rawParams)\r\n位于System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext上下文,WebServiceMethodData methodData)”,“ExceptionType:“System.FormatException”} //格式和样式。。。 打印前显示错误(测试错误,“dvMessage”); });
您不需要任何库,只需要jquery ui对话框。而且它的所有功能都非常好(有空格和回车)

函数显示错误(json){
$('.error').remove();
$(document.documentElement).append(“”+json['ExceptionType']+
“:”+json['Message']+''+json['StackTrace']+
'');
$('.error').dialog();
}

它将把你的堆栈跟踪放在pre标记中。

你不需要任何库,只需要jquery ui对话框。而且它的所有功能都很好(有空格和回车)

函数显示错误(json){
$('.error').remove();
$(document.documentElement).append(“”+jso