@SOLVED
正如James M. Lay所解释的,我应该将我的内容类型从application/x-www-form-urlencoded
更改为application/json
它隐含在一个错误中,因为似乎只有UrlEnconded类型在服务器端生成POST数组(至少在PHP中)。所以我不得不改变我在服务器脚本中接收/处理请求的方式
$json = file_get_contents('php://input'); //yes. php://input
if($json) $params = json_decode($json,true);
else $params = $_POST;
我还必须在Javascript代码中进行一些更改,以检查内容类型并生成不同的字符串。如果是JSON我只使用JSON.stringify
//string to use in the 'send' method
this.getParametersString = function(){
if(this.contentType == 'application/json'){
return JSON.stringify(this.parameters);
}else{}
}
我有一个问题
我正在构建一个函数,它接收参数以写入参数列表并通过POST发送它
问题在于我们无法发送特殊字符,例如+
所以我尝试使用函数encodeURIComponent
将它们编码为URI友好字符串。
还有另一个问题:如果收到的参数是一个对象,我循环遍历属性,检查它是否是另一个对象或字符串,如果它是一个对象,再次循环,否则编码。
但是它返回了编码字符串的对象。我必须使对象成为发送它的字符串,为此我使用JSON.stringify
。它解码编码的字符串。因此,%2B
再次变为+
,并且不会通过POST将其发送到服务器。
另一方面如果我先使用stringify
而encodeURIComponent
会产生类似"的标记。和{}不应编码,字符串不是写得很好的JSON
你好吗?这是不使用jQuery的方式吗?我是否必须构建自己的stringify函数?!
答案 0 :(得分:6)
即时通讯使用以下内容我没有问题
encodeURIComponent(JSON.stringify(object_to_be_serialised))