我正在使用jQuery.ajax(...)从ASP.NET MVC服务中检索JSON数据。当服务器遇到异常时,我将400 Bad Request状态发送回客户端并将我的异常作为JsonResult发送:
Response.StatusCode = 400;
return Json(new { ex.Message, ex.StackTrace });
这是我的jQuery代码:
$.ajax(
{
type: "POST",
url: deleteUrl,
dataType: "json",
data:
{
dataItems: dataItems,
toJSON: true
},
success: function(msg)
{
alert(msg[i].dataItem);
},
error: function(request, status, error)
{
alert(request.responseText);
}
});
我的ASP.NET代码将我发送到我的JavaScript代码的错误部分,错误块只允许我读取request.responseText,而不是使用从服务器返回的对象。
现在,我不想将另一个JavaScript包含在json_parse之类的内容中,而只是反序列化我的Exception,我想简单地利用jQuery使用的相同JSON解析器,尽管我找不到容易找到的有关它的信息。
有人能指出我正确的方向吗?
答案 0 :(得分:6)
如果我没弄错的话,jQuery过去常常使用eval
。从1.4开始,它会利用原生JSON反序列化器(如果有的话)(例如,Firefox中有一个)
答案 1 :(得分:2)
我认为在javascript中如果你有一个json字符串,你可以使用eval来获取一个对象,即:
var myObject = eval('(' + myJSONtext + ')');
上有关于此的更多信息
答案 2 :(得分:0)
也许这可以帮到你。我用它来删除json中的注释和空格:
json = eval( o.responseText
.replace( /\/\*(.*)\*\/g, ' ' )
.replace( /([^\:])\/\/[^\n]*\n/g, '$1' )
.replace( /^\s|\s+|\s$/g, '' ) )