Проблема с получением сообщения Ajax

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

Дано из:

http://php.net/manual/en/function.urldecode.php

Комментарии:

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.