Я вставил данные пользователя в таблицу пользователей с помощью 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, чтобы добавить косую черту, чтобы ошибка не возникала, но не работала



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Для экранирования специального символа используются двойные слэши ("\\"). Это должна быть просто косая черта.
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);Вы закодировали данные JSON после их кодирования, чтобы вставить строковый литерал, разделенный '. \ - это специальный символ в JSON, который требует экранирования.
$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);
Я просто заключил переменную ADDRESS с помощью addlashes (), если я удалю ее, в нее не будет добавлена косая черта. Я не знаю, как появляется двойная косая черта