Проблема в том, что вы используете двойные кавычки вокруг атрибута value
, но, конечно, все ключи и строки в выводе JSON находятся в двойных кавычках, первая из которых завершает атрибут value
в HTML.
Не выводить $data
в качестве значения скрытого элемента.Вместо этого выведите его в переменную JavaScript:
<script>
var products_data = <?php echo $data; ?>;
</script>
Затем вы можете использовать products_data
непосредственно в своем JavaScript.(Как показано там, это глобальная переменная, которая не идеальна; если вы можете поместить ее в функцию определения объема, это было бы лучше, но это зависит от того, как организованы ваши сценарии и тому подобное.)
Этоработает, потому что JSON является подмножеством литерального формата объекта JavaScript, поэтому допустимый JSON также является допустимым JavaScript для определения встроенного объекта.Ваш PHP сгенерирует что-то вроде этого и отправит его в браузер:
<script>
var products_data = {
"products": [
{"id": 427, "name": "WonderWidget", "price": 27.99},
{"id": 429, "name": "CoolNiftyThing", "price": 19.99}
]
};
</script>
Очевидно, точная структура будет зависеть от вашего $data
объекта на стороне сервера.