Uncaught SyntaxError: неожиданный идентификатор, когда я получаю ответ JSON от API

Я вставил данные пользователя в таблицу пользователей с помощью mysqli_real_escape_string(). Один адрес включает специальный символ - 20, National Park's 1st floor. Из-за этого специального символа JSON не может анализировать и выдает сообщение об ошибке Uncaught SyntaxError: Unexpected identifier.

PHP API

$arr['permanent_address'] = $row_emp->permanent_address; // No forward shash
$arr['permanent_address'] = addslashes($row_emp->permanent_address); // add double slas

час

JS-код для синтаксического анализа скрипта

employees = '<?php echo json_encode($employees); ?>';
employees = JSON.parse(employees);

Переменная сотрудника выглядит так

employees = '[{"user_id":"5b62f1568abb1","employee_type":"sub_admin","employment_type":"full_time","salutation":"mr","first_name":"Shan","last_name":"Biswas","email":"[email protected]","country_code":"+91","phone_number":"8448412789","mailing_address":"20, National Park, 1st floor, Lajpat nagar 4","permanent_address":"20, National Park\\'s 1st floor, Lajpat nagar 4","permanent_state":"Delhi","permanent_city":"NEW DELHI","permanent_country":"India","permanent_zipcode":"110024","age":"","user_status":"active","date_of_birth":null,"created_at":"2018-08-02 05:56:06"}]';

Я добавил функцию addslashes() в API, чтобы добавить косую черту, чтобы ошибка не возникала, но не работала

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
524
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Для экранирования специального символа используются двойные слэши ("\\"). Это должна быть просто косая черта.

var employees = '[{"user_id":"5b62f1568abb1","employee_type":"sub_admin","employment_type":"full_time","salutation":"mr","first_name":"Shan","last_name":"Biswas","email":"[email protected]","country_code":"+91","phone_number":"8448412789","mailing_address":"20, National Park, 1st floor, Lajpat nagar 4","permanent_address":"20, National Park\'s 1st floor, Lajpat nagar 4","permanent_state":"Delhi","permanent_city":"NEW DELHI","permanent_country":"India","permanent_zipcode":"110024","age":"","user_status":"active","date_of_birth":null,"created_at":"2018-08-02 05:56:06"}]';

var object = JSON.parse(employees);
console.info(object);

Я просто заключил переменную ADDRESS с помощью addlashes (), если я удалю ее, в нее не будет добавлена ​​косая черта. Я не знаю, как появляется двойная косая черта

Shan Biswas 03.08.2018 12:02

Вы закодировали данные JSON после их кодирования, чтобы вставить строковый литерал, разделенный '. \ - это специальный символ в JSON, который требует экранирования.

Quentin 03.08.2018 12:13
Ответ принят как подходящий
$arr['permanent_address'] = addslashes($row_emp->permanent_address); // add double slash

Вы почти никогда не должны использовать addslashes. Вместо этого используйте escape-функции, специфичные для вашего формата данных.

Полностью удалите указанную выше строку. Далее идет ваша кодировка:

employees = '<?php echo json_encode($employees); ?>';
employees = JSON.parse(employees);

Не делай этого.

JSON - это подмножество JavaScript. Используйте это напрямую.

employees = <?php echo json_encode($employees); ?>;

Попытка обернуть его строковым литералом, чтобы вы могли передать его через синтаксический анализатор JSON, просто вызывает проблемы.

Если вы В самом деле хотели это сделать (а это бессмысленно!), Тогда используйте функцию, которая берет строку PHP и генерирует из нее исходный код JavaScript. Не пытайтесь кодировать его вручную, добавляя кавычки и экранируя себя.

employees = <?php echo json_encode(json_encode($employees)); ?>;
employees = JSON.parse(employees);

Другие вопросы по теме