Я использую jQuery.ajax (...) для получения данных JSON из сервиса MVC ASP.NET. Когда сервер встречается с исключением, я передаю 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 и просто десериализовывают мое Исключение, я хотел бы просто усилить тот же синтаксический анализатор JSON, который использует jQuery, хотя я не могу найти, с готовностью находят информацию о нем.
Кто-то может указать на меня в правильном направлении?
jQuery Используется для использования
, если я не ошибаюсь. С 1,4, он использует преимущества родного JSON Deserializer, если есть (например, есть один в Firefox)
Я думаю, что в JavaScript, если у вас есть строка JSON, вы можете использовать Eval, чтобы получить объект, т. Е.:
var myObject = eval('(' + myJSONtext + ')');
Есть больше информации об этом на http: // www. json.org/js.html
Может быть, это может помочь вам. Я использую его для удаления комментариев и пробелов в моем JSON:
json = eval( o.responseText
.replace( /\/\*(.*)\*\/g, ' ' )
.replace( /([^\:])\/\/[^\n]*\n/g, '$1' )
.replace( /^\s|\s+|\s$/g, '' ) )