Я использую.ajax() для отправки запроса на сервер. Для обработки запроса сервер использует PHP.
Согласно php urldecode, $ _REQUEST уже декодирован, а символы Plus ('+') декодируются на символ пробела.
Я обнаружил, что символы Plus декодируются на символ подчеркивания ('_'). Это верно как для +, так и для %20. Есть ли способ обойти это? Это кажется неожиданным поведением.
Пример кода, для чего его стоит:
Ajax:
$.ajax({
url: 'mySite.php',
method: 'POST',
data: $(this).serialize()
});
PHP:
$myVar = "Veh #";
if (isset($_REQUEST["$myVar"])){
//do stuff
}
//to see request
var_dump($_REQUEST);
Var_dump дает
array (1) {["Veh _ #"] => string (1) "6"}
Я ожидаю, что это будет
array (1) {["Veh #"] => string (1) "6"}
fiddler:
Veh+% 23 = 6
Я могу быть некорректным, поскольку я все еще изучаю PHP, но я думаю, что это стандартное поведение при использовании GET и POST в PHP.
см. здесь в документации
http://www.php.net/manual/en/language.variables.external.php
Я вообще не знаю об этом.
также см. этот вопрос
Получите PHP, чтобы остановить замену. символов в массивах $ _GET или $ _POST?
Заметка:
Точки и пробелы в именах переменных преобразуются в символы подчеркивания.