我试图发送一个对象到我的服务器,其中包含空格键。由于某些原因,我不明白空格在服务器上被转换为下划线。我该如何预防呢?
var myObject = {};
myObject['x x'] = 'asdf';
$.post(someUrl, myObject, function (data) {
...
}, 'json');
在我的PHP代码$_POST设置为这个数组:
$_POST = [
'x_x' => 'asdf'
]
为什么会这样,我该如何处理?还有其他字符以这种方式转换吗?
适合我的变通方法/解决方案是这样的,这是对Andreas提供的问题的回答。简而言之:PHP将一些字符转换为下划线(文档注释在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']
访问