2012-03-12 4 views
0

Моя система запускает некоторые MySQL-запросы в PHP для извлечения данных. Данные, которые извлекаются структурирован в виде массива, аналогичной ниже:Прохождение угловой скобки в шестнадцатеричном виде через JSON AJAX от PHP до JS

$ret = array(
    "name" => "John Doe", 
    "location" => "Antarctica", 
    "description" => "Height < 200" 
); 

я вернуть это через AJAX с помощью:

echo json_encode($ret); 

событие ошибки АЯКС обжигают и после осмотра возвращенных данных (jqXHR .responseText) через консоль Chrome, я замечаю:

"description" : "Height \x3c 200" 

, который бросает ошибку синтаксического анализа.

Я знаю, что \ x3c является шестнадцатеричным представлением «<» и, по-видимому, эта форма делает JSON недействительным. Кажется, я не могу найти способ сделать так, что я могу передать угловой кронштейн через JSON в действующей форме. Прямая замена строки «\ x3c» на стороне PHP не работает.

Кроме того, я знаю, что указание возврата AJAX как HTML будет работать, но я передаю набор данных, следовательно, использование JSON.

ответ

1

Использование встроенного объекта Chrome JSON (window.JSON), я могу не разобрать выход из вас PHP программы нет проблем,

"description" : "Height \x3c 200" 

и могу сериализовать, что в javascript JSON-объект.

var jsonString = JSON.stringify({"description": "Height \x3c 200"}); 
//jsonString has the value "{"description":"Height < 200"}" 

var jsonObject = JSON.parse(jsonString); 
//jsonObject has an object that looks like this 
//Object 
//description: "Height < 200" 
//__proto__: Object 

если вам нужна совместимость с браузерами, которые не поддерживают собственный объект JSON, я бы рекомендовал использовать библиотеку, таких как JQuery.

Кроме того, функцию json_encode() в PHP можно передать объекту конфигурации, чтобы точно настроить, как кодируется ваш JSON, если вам не нравится «\ x3c», вы можете изменить его на то, что ваш парсер javascript может как лучше, как «≶» :)

http://php.net/manual/en/function.json-encode.php

+1

Я использую сторонний контроль JS, так что я не имею возможности манипулировать AJAX-возвращаемые данные с помощью методов, таких как JSON.stringify(). Однако модификаторы json_encode() работают как шарм :) – kaspnord

Смежные вопросы