Что ограничивает этот анализ JSON и что я могу сделать, чтобы это исправить?

Проблема проста для понимания и демонстрации.

Этот код работает нормально:

<?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?

1

Решение

Ваши данные JSON содержат ', Так что, если вы вводите эти данные в ' строковый литерал с разделителями, этот строковый литерал будет преждевременно закрыт и вызовет синтаксическую ошибку. Простой пример:

var foo = '{"key": "This key's value"}';

Вы должны заметить, что если вы посмотрите на источник сгенерировать JavaScript.

Там нет необходимости использовать JSON.parse Вот. Внедренный JSON можно интерпретировать как литерал объекта / массива JavaScript:

var obj = <?= $title_json; ?>;

Смотрите также: Как передать переменные и данные из PHP в JavaScript?

8

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector