我试图将一个对象发送到我的服务器,该服务器包含包含空格的键。出于某种原因,我不明白空白会在服务器上转换为下划线。我该如何防止这种情况?
var myObject = {};
myObject['x x'] = 'asdf';
$.post(someUrl, myObject, function (data) {
...
}, 'json');
在我的PHP代码中,$ _POST设置为此数组:
$_POST = [
'x_x' => 'asdf'
]
为什么会这样,我该如何处理?是否有其他角色以这种方式转换?
答案 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'
]
]
访问它。