Проблема проста для понимания и демонстрации.
Этот код работает нормально:
<?php
$title = array("dfg","sdfsdg","asfas","Sdfh","Ssdth","Csdgo");
$title_json = json_encode($title);
?>
<script>
var obj = JSON.parse('<?= $title_json; ?>');
console.log(obj);
</script>
Этот код не:
<?php
$title = array("Is President Trump still using his old Android phone?","Trump sets a dizzying WH pace in first days","Trumps White House Charm Offensive a Contrast to Solitary Obama","The inside story of a basketball teen so tall, he doesn't look real","Scientists say they are closer to making Star Wars holograms","Sperm theft lawsuit leaves appeals court weighing how much a life is worth","Call it Smunday: Heinz pushing to make Super Bowl Monday a national holiday");
$title_json = json_encode($title);
?>
<script>
var obj = JSON.parse('<?= $title_json; ?>');
console.log(obj);
</script>
Выводит ошибку в консоли: Uncaught SyntaxError: missing ) after argument list - (index):20
, где строка 20 - это строка с JSON.parse, и если вы посмотрите на исходный код страницы, строка гласит:
var obj = JSON.parse('["Is President Trump still using his old Android phone?","Trump sets a dizzying WH pace in first days","Trump's White House Charm Offensive a Contrast to Solitary Obama","The inside story of a basketball teen so tall, he doesn't look real","Scientists say they are closer to making 'Star Wars' holograms","Sperm theft lawsuit leaves appeals court weighing how much a life is worth","Call it 'Smunday': Heinz pushing to make Super Bowl Monday a national holiday"]');
Вы можете заметить, что два примера кода совершенно одинаковы, массивы даже имеют одинаковую длину, единственное отличие состоит в том, что во втором примере строки длиннее. Означает ли это, что существует максимальная длина строк, которые могут быть проанализированы JSON?
`
(также известные как обратные кавычки) для переноса строк. (т.е.var obj = JSON.parse(`["Is Pre..."]`);
- person haxxxton   schedule 21.02.2017json_encode
сбой молча (скажем, из-за того, что были предоставлены неверные данные). так как это приведет к тому, что js на лицевой стороне будет выглядеть какvar obj = ;
, что вызоветUncaught SyntaxError: Unexpected token ;
- person haxxxton   schedule 21.02.2017json_encode
такие вещи, как искаженные символы UTF-8 (см. этот пример) - person haxxxton   schedule 21.02.2017