2014-03-21 3 views
0

У меня есть данные JSON, переданные PHP, и мне нужно разобрать его в Javascript.JSON parse и одиночная цитата

item = JSON.parse('<?=json_encode($item_localized);?>'); 

Некоторые проблемы. У меня есть строка в $ item_localized, которая содержит одиночную кавычку. Jsonlint говорит, что это действительно json. Потому что я использую '<?=json_encode($item_localized);?>' - Получаю сообщение Uncaught SyntaxError: Неожиданный идентификатор. Я не могу использовать двойные кавычки. Я попытался заменить одинарные кавычки \ ', но он не работает.

+0

Что вы здесь делаете? JSON для javascript, и вы пытаетесь разобрать PHP-код? Это внутри файла PHP или? – skywalker

+0

Внутри файла PHP. json_encode возвращает допустимые данные JSON и данные анализа javascript – user3442231

ответ

2

json_encode будет генерировать текст JSON.

JSON.parse необходимо получить строку , содержащий текст JSON.

Вам нужно процитировать строку, но вы не можете просто место ' вокруг него, потому что не избежать каких-либо символов в строке, которые имеют особое значение в строке литерал (как и другие ' символов).

Если вы поместите строку в json_encode, вы получите текст JSON, состоящий из строкового представления другого текста JSON. Поскольку JSON является индивидуален JS, эта строка будет JS сейф:

item = JSON.parse(<?php echo json_encode(json_encode($item_localized)); ?>); 

Это, однако, глупо. Поскольку JSON является подмножеством JavaScript, вы можете просто использовать его непосредственно как литерал JavaScript.

item = <?php echo json_encode($item_localized); ?>; 
+0

It * should * work. Как выглядит сгенерированный JS? Как вы определяете, что он не работает? – Quentin

+0

«Это, однако, глупо. Поскольку JSON является подмножеством« ... и вам может понадобиться ограничить этот фрагмент кода этим конкретным подмножеством (и сделать его строкой вместо фрагмента кода). Может быть, зависит от контекста ... – VolkerK

1

Как насчет item = <?=json_encode($item_localized);?>;?

+0

Вы по-прежнему получаете ту же ошибку? – Salman

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