2016-08-16 41 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']访问它。

相关问题