@解决了
正如詹姆斯·M·莱解释说,我要改变我的内容类型的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的方法吗? 我一定要建立自己的字符串化功能?