0

サーバーにリクエストを送信するために .ajax() を使用しています。サーバーは PHP を使用してリクエストを処理しています。

php urldecodeによると、 $_REQUEST は既にデコードされており、プラス記号 ('+') はスペース文字にデコードされています。

私が見つけたのは、Plus 記号がアンダースコア ('_') にデコードされていることです。これは、+ と %20 の両方に当てはまります。これを回避する方法はありますか?これは予期しない動作のようです。

その価値のコードサンプル:

アヤックス:

$.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 は

配列(1) {["Veh_#"]=> 文字列(1) "6"}

私が期待するのは

配列(1) {["車両番号"]=> 文字列(1) "6"}

投稿されたフィドラーデータ:

車両+%23=6

4

2 に答える 2

1

まだPHPを勉強中なので間違っているかもしれませんが、PHPでGETやPOSTを使うときの標準的な動作だと思います。

ドキュメントのこちらを参照してください

http://www.php.net/manual/en/language.variables.external.php

私はとにかくこの周りに気づいていません。

このスタックオーバーフローの質問も参照してください

PHP に「.」の置換を停止させます。$_GET または $_POST 配列の文字?

于 2013-10-03T22:31:23.923 に答える
0

ノート:

変数名のドットとスペースはアンダースコアに変換されます。

( php.net - 外部変数)

于 2013-10-03T22:35:53.443 に答える