#php #javascript #ajax
#php #javascript #ajax
Вопрос:
Я отправляю некоторое сообщение через Ajax, используя encodeURIComponent, но на стороне сервера я получаю какой-то нежелательный символ в сообщении, например, вместо
не удается
Я получаю
не удается
Каково решение этой проблемы
Ответ №1:
Попробуйте этот ответ:
<?php
// first use encodeURIComponent on javascript to encode the string
// receive json string and prepare it to json_decode
$jsonStr = stripslashes ($_POST['action']);
// decode to php object
$json = json_decode ($jsonStr);
// $json is now a php object
?>
Дано из:
Комментарии:
1. На
urldecode
странице есть пример сstripslashes
иjson_decode
в нем, но безurldecode
? Это очень круто.2. Это действительно устраняет проблему OP, но это взлом, поскольку PHP в любом случае не должен добавлять косые черты к значениям в запросе. Если вы убедитесь, что php.net/manual/en/info.configuration.php#ini.magic-quotes-gpc отключен, как и должно быть, поскольку он устарел, вам не нужно будет удалять добавленные косые черты.
Ответ №2:
Кавычки не экранируются encodeURIComponent. namuol прав, ваш фреймворк пытается быть очень умным для вас и применяет свой собственный экранирование ко всему, что передается через POST и GET. При использовании PHP убедитесь, что отключен параметр Magic quotes, который теперь устарел.
Ответ №3:
Есть вероятность, что используемая вами платформа активно пытается предотвратить атаки с использованием SQL-инъекций, экранируя символ, заключенный в одинарную кавычку по умолчанию. Посмотрите в документации для вашего фреймворка, чтобы найти способ получить дословный текст из данных POST.