У меня есть вложенный массив php, хранящийся в переменной $myArray
, ниже показано, как выглядит массив (его не полный вывод) после того, как var отправил его в браузер.PHP-массив для JSON - Uncaught SyntaxError: Неожиданный конец ввода
<?php var_dump($myArray); ?>
Выход:
array (size=4)
'id' => string '162' (length=3)
'content' => string 'Test content' (length=12)
'children' =>
array (size=16)
0 =>
array (size=4)
'id' => string '29208' (length=5)
'content' => string 'Test content 1' (length=14)
'children' =>
array (size=3)
...
1 =>
array (size=4)
'id' => string '29215' (length=5)
'content' => string 'Test content 2' (length=14)
'children' =>
array (size=1)
...
2 =>
array (size=3)
'id' => string '29220' (length=5)
'content' => string 'Test Content 3' (length=14)
Чтение переменной массив из JavaScript, как показано ниже:
<script type="text/javascript">
var myVar = JSON.parse('<?php json_encode($myArray) ?>');
</script>
Возвращает следующую ошибку в консоли
Uncaught SyntaxError: Unexpected end of input
При отладке кода я сделал следующее:
Создал новую переменную и сохранил некоторые данные JSON в ней, а затем JSON проанализировал ее на другую переменную, а затем окончательно успокоил вывод и работал нормально.
<script type="text/javascript">
var x = '{"id":123,"content":"This is a test content"}';
var myVar = JSON.parse(x);
console.log(myVar);
</script>
Выход был объект с этими значениями в консоли:
Object
content: "This is a test content"
id: 123
Что я делаю неправильно?
Почему json кодирует и затем анализирует JS? Почему не печатать как есть? Например: 'var myVar = = Json_encode ($ myArray)?>;' – Rudie
Rudie правильный, вам не нужно разбирать JSON в виде строки при выводе его непосредственно в браузер таким образом. – phpisuber01
Возможный дубликат [Как получить доступ к переменным PHP в JavaScript или jQuery, а не Php echo $ variable?>] (Http://stackoverflow.com/questions/1808108/how-to-access-php-variables-in- javascript-or-jquery-rather-than-php-echo-vari) – user1596138