Неверный JSON, но JSON выглядит действительным - PullRequest
3 голосов
/ 23 августа 2011

Я беру строку и использую $ .parseJSON (string), но продолжаю получать следующую ошибку:

uncaught exception: Invalid JSON: {"0":{"chartHtml":"<p> Slide 1</p> ","presNote":"","chartOrderIndex":0},"1":{"chartHtml":"<p> Slide 2</p> ","presNote":"","chartOrderIndex":1},"2":{"chartOrderIndex":2},"3":{"chartHtml":"<p> e 3</p> ","presNote":"","chartOrderIndex":3},"4":{"chartHtml":"<p> Slide 4</p> ","presNote":"","chartOrderIndex":4},"5":{"chartHtml":"<p> Slide 5</p> ","presNote":"","chartOrderIndex":5},"6":{"chartOrderIndex":6}}

Результаты Firebug во время отладки после запуска slideJson.d:

    >>> slideJson.d
"{"0":{"chartHtml":"<p> Slide 1</p> ","presNote":"","chartOrderIndex":0},"1":{"chartHtml":"<p> Slide 2</p> ","presNote":"","chartOrderIndex":1},"2":{"chartOrderIndex":2},"3":{"chartHtml":"<p> e 3</p> ","presNote":"","chartOrderIndex":3},"4":{"chartHtml":"<p> Slide 4</p> ","presNote":"","chartOrderIndex":4},"5":{"chartHtml":"<p> Slide 5</p> ","presNote":"","chartOrderIndex":5},"6":{"chartOrderIndex":6}}"

Вот некоторые из призывов десериализовать JSON:

function (slideJson) {
var slideObj, jsonStr;
if (slideJson.d) {
    slideObj = $.parseJSON(slideJson.d);

Ajax-вызов для получения Json с типом контента:

$.ajax({
    url: 'Someurl',
    type: "POST",
    data: "{}",
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (data) { somenamespace.loadSlides(data); }
});

Ответы [ 3 ]

6 голосов
/ 23 августа 2011

Ваш JSON действителен, отметьте http://jsonlint.com/

Как насчет вашего типа контента? Если вы используете PHP, установите следующий заголовок:

header('Content-type: application/json');
2 голосов
/ 23 августа 2011

В результате рассматриваемая строка JSON содержала \n и \r в свойстве chartHTML, которые по умолчанию создаются методом CKeditor .getData().Так как я вставлял ошибки из firebug, их не было видно, и JSON оказался действительным, что привело к моему замешательству.

1 голос
/ 23 августа 2011

Вам не нужно использовать $.parseJSON это хорошо сформированная арелада.Попробуйте использовать его напрямую.

Рабочая демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...