2016-08-16 61 views
0

我想發送一個對象給我的服務器,它有包含空格的鍵。由於某些原因,我不明白空白在服務器上轉換爲下劃線。我怎樣才能防止這一點?

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

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

在我的PHP代碼$ _ POST設置爲這個數組:

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

這是爲什麼?如何處理呢?有沒有其他角色以這種方式轉換?

+0

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

+3

可能出現[Get PHP停止替換')的重複。 $ \ _ GET或$ \ _ POST數組中的字符?](http://stackoverflow.com/questions/68651/get-php-to-stop-replacing-characters-in-get-or-post-arrays) – Andreas

+0

重複是關於點的,但由於相同的原因,PHP也改變了一堆其他字符,如空間。 – Andreas

回答

0

適用於我的解決方法/解決方案是this,這是Andreas提供的問題的答案。簡而言之:PHP將某些字符轉換爲下劃線(doc comment at php.net)。這不是由jQuery造成的!

所以我總結我的論點JS到另一個對象:

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

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

現在我得到了PHP這種結構具有未修改鍵:

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

我可以用$_POST['arguments']訪問它。

相關問題