如何防止这种情况发生?Post将空格转换为下划线


How to prevent that $.post converts blanks to underscores?

我试图发送一个对象到我的服务器,其中包含空格键。由于某些原因,我不明白空格在服务器上被转换为下划线。我该如何预防呢?

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']访问