Почему jQuery.parseJSON () не работает на всех серверах?

Привет, У меня есть сценарий контактов на арабском языке, который использует Ajax для получения ответа с сервера после заполнения формы.

На некоторых серверах apache jQuery.parseJSON () выдает недопустимый json исключение для того же json, которое отлично разбирается на других серверах. Это исключение возникает только в Chrome и IE.

Содержимое json кодируется с помощью функции php json_encode () . Я попытался отправить правильный заголовок с данными json и установить для юникода значение utf-8, но это не помогло.

Это один из ответов json, который я пытаюсь проанализировать (удалена вторая часть if, потому что она длинная ):

{"pageTitle": "\ u062e \ u0637 \ u0623 \ u0639 \ u0646 \ u062f \ u0627 \ u0644 \ u0625 \ u0631 \ u0633 \ u0627 \ u0644!"}

Примечание из этих данных арабский, что ' s почему это выглядит так после анализа с помощью php json_encode () .

Вы можете попробовать сделать запрос в приведенных ниже примерах и просмотреть полные данные ответа с помощью средств разработчика firebug или webkit. Ответ проходит jsonlint !

Наконец, у меня есть два URL-адреса, использующие одну и ту же версию сценария, попробуйте просмотреть их с помощью Chrome или IE, чтобы увидеть ошибку в сломанном примере.

Рабочий пример : http://namodg.com/n/

Неисправный пример : http://www.mt-is.co.cc/my/call-me /

Обновлено: Чтобы уточнить подробности, я хотел бы отметить, что мне удалось исправить это, используя старую eval () для анализа содержимого, я выпустил другую версию с этим исправлением, это было так:

// Parse the JSON data
try
{
    // Use jquery's default parser
    data = $.parseJSON(data);
}
catch(e)
{
    /*
     * Fix a bug where strange unicode chars in the json data makes the jQuery
     * parseJSON() throw an error (only on some servers), by using the old eval() - slower though!
     */
    data = eval( "(" + data + ")" );
}

Я все еще хочу знать, ошибка ли это в jquery ' s parseJSON () , чтобы я мог сообщить им об этом.

7
задан Maher4Ever 19 January 2011 в 22:02
поделиться