Ajax JSON Parse Error - PullRequest
       4

Ajax JSON Parse Error

2 голосов
/ 07 августа 2010

Я нахожу это немного странным. он работает на более старых версиях iQuery (то есть с 1.2.x до 1.3). Тем не менее, я получаю parserror при использовании jQuery 1.4.x

Любая помощь будет оценена. Спасибо.

Это то, что я получаю из XMLHttpRequest.responseText

({count: 5, success: true, error: '', cache: false, data: [{column: ['Mike','Mike','Steve','Steve','Steve']}]})

1 Ответ

3 голосов
/ 07 августа 2010

Jquery 1.4 обновил свой анализатор JSON, чтобы он больше не принимал недопустимый JSON, как раньше. Ваш сервер выводит недопустимый JSON, который ранее был допущен, но больше не разрешен. Это изменение было упомянуто (кратко) в заметках о выпуске и в документации , и было много обсуждений о it если вы гуглите "jquery 1.4 JSON"

Но чтобы подвести итог: ключи в JSON, чтобы быть действительными, должны иметь кавычки, строка не должна быть заключена в эти скобки, и ничто не может использовать одинарные кавычки в качестве разделителей, поэтому ваш JSON должен быть :

{"count": 5, "success": true, "error": "", "cache": false, "data": [{"column": ["Mike","Mike","Steve","Steve","Steve"]}]}

или, более наглядно:

{
    "count": 5,
    "success": true,
    "error": "",
    "cache": false,
    "data": [
        {
            "column": [
                "Mike",
                "Mike",
                "Steve",
                "Steve",
                "Steve"
            ]
        }
    ]
}

Характеристики очень красиво и четко изложены в http://www.json.org/ с изображениями и диаграммами. Вы также можете проверить свой JSON на JSONLint - вышеприведенный JSON прекрасно работает, но ваш исходный JSON вызывает все виды ошибок.

Что касается того, что вам нужно сделать: если у вас есть возможность изменить то, что отправляет ваш сервер, сделайте это - сделайте так, чтобы он выводил допустимый JSON. Пожалуйста. Только , если вы не можете изменить поведение сервера, вам придется использовать обходной путь из одного из постов, указанных выше, или использовать другую библиотеку JSON.

Общий принцип: во всех случаях делать все правильно и торговать; предпочтительнее - исправление выходных данных сервера (даже если это ошибка на внешнем сервере / API) - это долгосрочное решение, но оно может быть не совсем практичным. Поэтому иногда нужны хакерские обходные пути, но не оптимальные.

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