2016-08-16 17 views
0

空白を含むキーを持つオブジェクトをサーバーに送信しようとしています。何らかの理由で、私はブランクがサーバーで下線に変換されることを理解していません。どうすればこれを防ぐことができますか?

$_POST = [ 
    'x_x' => 'asdf' 
] 

なぜそれがあるとどのように私はそれに対処します:?私のPHPコードの$ _POSTは、この配列に設定されて

var myObject = {}; 
myObject['x x'] = 'asdf'; 

$.post(someUrl, myObject, function (data) { 
    ... 
}, 'json'); 

このように変換される他の文字はありますか?

+0

'var myObject = {'x x': 'asdf'}'? –

+3

[PHPを取得して '。'の置換を中止する]の可能な複製。文字列$ \ _ GETまたは$ \ _ POST配列?](http://stackoverflow.com/questions/68651/get-php-to-stop-replacing-characters-in-get-or-post-arrays) – Andreas

+0

複製ドットについてですが、PHPはスペースのような他の文字も同じ理由で変更します。 – Andreas

答えて

0

私にとってうまくいく回避策/解決策は、Andreasが提供している質問に対する答えであるthisです。つまり、PHPはいくつかの文字をアンダースコア(doc comment at php.net)に変換します。これはjQueryによって引き起こされたものではありません!

だから私は、別のオブジェクトにJSの私の引数をラップ:

$_POST = [ 
    'arguments' => [ 
     'x x' => 'asdf' 
    ] 
] 

そして私は$_POST['arguments']でそれにアクセスすることができます。

var myObject = { 
    arguments: {} 
}; 
myObject.arguments['x x'] = 'asdf'; 

$.post(someUrl, myObject, function (data) { 
    ... 
}, 'json'); 

は今、私は変更されていないキーを持ってPHPでこの構造体を取得します。

関連する問題