代码之家  ›  专栏  ›  技术社区  ›  Josh Kodroff

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

  •  0
  • Josh Kodroff  · 技术社区  · 16 年前

    如果调用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"}
    

    我想在alert或jQuery对话框中显示此消息,但为了做到这一点,我想将其打印出来。有没有一个JS库是为这个目的而构建的?

    2 回复  |  直到 16 年前
        1
  •  2
  •   jcubic    16 年前

    您不需要任何库,只需要jqueryui对话框。而且它真的很漂亮(有空间和入口)

    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-tag中。

        2
  •  1
  •   Brandon Boone    16 年前

    <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>