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 чтобы получить неэкранированные данные

С сайта JQuery

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////
Другие вопросы по тегам