Я использую jQuery.ajax (...) для извлечения данных JSON из службы ASP.NET MVC. Когда сервер обнаруживает исключение, я посылаю 400 Bad статус Запроса обратно клиенту и отправить мое исключение как JsonResult:Как jQuery десериализовать JSON?
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, хотя я не могу найти с готовностью найти информацию об этом ,
Может кто-нибудь указать мне в правильном направлении?
Я нашел пост (http://www.west-wind.com/weblog/posts/324917.aspx) на блоге Рик Стрэхл, что объясняет: «Обратите внимание, что для функции ajaxJSON требуется кодировка JSON. JQuery не имеет каких-либо встроенных функций кодирования JSON (что кажется большим упущением, но, вероятно, было сделано для сохранения небольшого размера). Однако имеется ряд доступных JSON-реализаций. Выше я использую файл JSON2.js от Дугласа Крокфорда, чтобы сериализовать карту объектов параметров в JSON. " Мне показалось, что я прочитал это в jQuery 1.4 ... –
. Что изменилось, jQuery теперь будет использовать 'JSON.parse' вместо' eval', если он будет доступен. jQuery никогда не предоставлял (и до сих пор не предоставляет) поддержку OOTB для сериализации JSON *. –
@Crescent, который должен быть дан как ответ, а не комментарий. – Cheeso