如何防止$ .post将空格转换为下划线?

时间:2016-08-16 16:18:31

标签: javascript php jquery ajax post

我试图将一个对象发送到我的服务器,该服务器包含包含空格的键。出于某种原因,我不明白空白会在服务器上转换为下划线。我该如何防止这种情况?

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

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

在我的PHP代码中,$ _POST设置为此数组:

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

为什么会这样,我该如何处理?是否有其他角色以这种方式转换?

1 个答案:

答案 0 :(得分:0)

适用于我的解决方法/解决方案是this,这是对Andreas提供的问题的回答。简而言之:PHP将一些字符转换为下划线(doc comment at php.net)。它不是由jQuery引起的!

所以我将JS中的参数包装到另一个对象中:

Option Explicit

Public RunWhen As Double
Public Const cRunIntervalSeconds = 5 ' two minutes
Public Const cRunWhat = "TheSub"  ' the name of the procedure to run

Sub StartTimer()
    RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
    Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat
End Sub


Sub TheSub()
    ''''''''''''''''''''''''
    ' Your code here
    ''''''''''''''''''''''''
    Debug.Print "hi this is working"
    StartTimer  ' Reschedule the procedure
End Sub

现在我在PHP中获得了具有未修改密钥的结构:

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

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

我可以使用$_POST = [ 'arguments' => [ 'x x' => 'asdf' ] ] 访问它。