簡體   English   中英

是否有一個JavaScript庫可以解析和以JSON格式返回的漂亮的.NET異常?

[英]Is there a Javascript library to parse and pretty print .NET exceptions returned as JSON?

如果我正在調用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庫?

您只需要jquery ui對話框就不需要任何lib。 以及它的全部借口(有空格並進入)

function show_error(json) {
   $('.error').remove();
   $(document.documentElement).append('<div class="error"><h1><b>' + json['ExceptionType'] + 
      '</b>: ' + json['Message'] + '</h1><pre class="trace">' + json['StackTrace'] + 
      '</pre></div>');
   $('.error').dialog();
}

它將您的堆棧跟蹤放在pre標簽中。

我不知道任何庫,但這應該可以幫助您開始……另存為.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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM