2013-08-29 4 views
0

Я строю сайт, хранить данные в формате JSON, чтобы скрытый элемент ввода с PHPПолучите данные JSON, хранящиеся в скрытом элементе ввода?

<input type='hidden' class='json_data' name='json_data' value='".json_encode($data[0])."'> 

с этим кодом, у меня есть этот результат:

<input class="json_data" type="hidden" value="[{"ALBUM_ID":"1234","PHOTOS_ID":"1234578"}]" name="json_data"> 

, но когда я пытаюсь получить значение с jquery.val и пытаться показать ALBUM_ID, я получаю это {

что-то не так с моим способом положить json в html правильно?

, а затем получить его с помощью jquery/javascript?

благодарит

+3

Может быть из-за ' "'' внутри"' –

+0

я сделал 'htmlspecialchars', но до сих пор получить тот же результат. – yosafatade

+0

Почему вы помещаете это в скрытый ввод, а не просто добавляете тег скрипта на страницу со значением? – epascarello

ответ

3

Сначала перейдите на эту открытую консоль и посмотрите результат. Ctl + Shift + J.

http://jsfiddle.net/techsin/Q2MHA/

Вы должны сделать две вещи исправить. ' и " '

Второй раз этот код

JSON.parse($('.json_data').val())[0]

вам нужно [0], потому что по какой-то причине ваш объект JSON, завернутый в [] .. вы знаете, почему.

Ваш HTML должен выглядеть следующим образом

<input ... value='[{"ALBUM_ID":"1234","PHOTOS_ID":"1234578"}]'...>

1

Вам нужно правильно обрабатывать объекты в ваших input «ы value. Если заполнить его с PHP, используйте htmlspechalchars() и использовать результат от этой функции

+0

я сделал это. 'htmlspecialchars (json_encode ($ data))', но все равно получить '{' – yosafatade

0

Постарайтесь избежать "с addslashes или htmlspecialchars

или закодировать строку с base64 и расшифровывают его с JS перед разбором строки в формате JSON

+1

Слэши не работают в атрибутах. Это не JavaScript. – epascarello

1

инспектировать тщательно следующую строку.

<input class="json_data" type="hidden" value="[{"ALBUM_ID":"1234","PHOTOS_ID":"1234578"}]" name="json_data"> 

Как вы видите, вы использовали " для струнного enclosement. строка JSON также включает ", который разбивает ваше строковое окружение. Используйте ', чтобы приложить строку.

<input class="json_data" type="hidden" value='[{"ALBUM_ID":"1234","PHOTOS_ID":"1234578"}]' name="json_data"> 
+3

И когда значение имеет '' 'в нем? Перерывы еще раз! – epascarello

+0

@epascarello что если строка json включает 'и' both.What делать в этом случае? –

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