Jquery Ajax экранирует строки, несмотря на magic_quotes_gpc = off
Данные, которые я публикую через jQuery Ajax, экранируются, даже когда magic_quotes_gpc = off
на сервере.
Получение данных напрямую из $_POST
(без использования AJAX) работает нормально, без экранирования. но отправив их через ajax
ускользает от них.
$.ajax({
url: 'includes/updateDb.php',
type: 'POST',
data: {
id: $this.attr('data-id'),
text: $this.html()
}
});
test's
-> test\'s
Это особенность или ошибка? Как мне поступить? Раздень струны через PHP
на сервере?
3 ответа
Оказалось, что несмотря на phpinfo()
показало, что magic_quotes_gpc
были выключены, они действительно были включены. Это была функция общего хостинга, которая вызвала php.ini
затрагивать только самую верхнюю папку. Я не понял этого.
Извинения и спасибо за помощь -)
AJAX кодируется как application/x-www-form-urlencoded
по умолчанию в jQuery, в вашем использовании PHP utf8_decode
чтобы получить неэкранированные данные
contentTypeString
Default: 'application/x-www-form-urlencoded; charset=UTF-8'
Теперь, когда вам ответили до jQuery.ajax( url [, settings] )
send only be defualt, что означает, что можно изменить закодированные данные... это помогает предотвратить дальнейшие проблемы в 99% случаев... используемая ими кодировка defualt
application/x-www-form-urlencoded; charset=UTF-8
Теперь это может быть изменено на любой тип контента, скажем, text/javascript
если это был тип данных вашей отправки. но обычно мы пытаемся отправить php строку или массив. этот массив должен быть закодирован так, чтобы оба языка понимали... теперь с версии 5.2.0 php поддерживает кодирование json, которое является лучшим способом отправки данных из java . так что вы можете отправить json-кодированный номер в php, который выглядит примерно так
{"foo-bar": 12345}
и используя json_decode()
превратить это в
$json = '{"foo-bar": 12345}' ;
$obj = json_decode($json);
print $obj->{'foo-bar'}; // will return 12345
поэтому официально каждый орган использует этот формат для отправки данных из JavaScript в php. для вашего примера приведем пример того, как будет выглядеть PHP-код, скажем, что вы отправляете что-то вроде имени пользователя и пароля, массив будет выглядеть примерно так {"id": "234" , "text" : "helloo,/////text////"}
$posted_data = $_POST['id'];
$parsed_data = josn_decode('$posted_data');
echo $parsed_data -> {'text'}; // should print helloo,/////text////