JSON.parse Unexpected token T in JSON at position 12

101
06 мая 2021, 10:10

Есть у нас сформированный на php масив данных:

$data = array(
    '0' => array(
        'TITLE' => '"Title 1"',
        'ID' => 35,
    ),
    '1' => array(
        'TITLE' => '"Тайтл 2"',
        'ID' => 36,
    ),
    '2' => array(
        'TITLE' => '"Тайтл 3"',
        'ID' => 37,
    )
);

При попытке перевести его в JS масив путем:

var data = $.parseJSON('<? echo json_encode($data); ?>');

или

var data = JSON.parse('<? echo json_encode($data); ?>');

Ловим ошибку: Uncaught SyntaxError: Unexpected token T in JSON at position 12 Те выбивает на первом символе на латинице. Если убрать первый элемент с латиницей "Title 1", все работает корректно.

Проверял масив JSON валидаторами все ок, да и у PHP с его обработкой проблем не возникло. Сам масив:

[{"TITLE":"\"Title 1\"","ID":35},{"TITLE":"\"\u0422\u0430\u0439\u0442\u043b 2\"","ID":36},{"TITLE":"\"\u0422\u0430\u0439\u0442\u043b 3\"","ID":37}]
Answer 1

json_encode($data) возвращает уже готовый к работе в JS массив. Поэтому ваш код должен выглядеть так:

// не надо ничего парсить и заключать в кавычки
var data = <? echo json_encode($data); ?>;
READ ALSO
Репозитории и DRY

Репозитории и DRY

вопрос по репозиторям, их аналогам и DRYБерем простой пример:

107
Call to undefined function Wordpress

Call to undefined function Wordpress

Есть функции внутри плагина(save,get_data,get_image)В файл категория

83
Как отобрать пропуски значений чисел по порядку в массиве?

Как отобрать пропуски значений чисел по порядку в массиве?

Есть массив такого видаОн содержит числа меньшего к большему

89
php base64 decode image

php base64 decode image

Использую Symfiny 4, получаю uploaded files $files = $request->files->get('file');

87