2

@解决了

正如 James M. Lay 所解释的,我应该将我的内容类型从更改application/x-www-form-urlencodedapplication/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的方法吗?我必须建立自己的字符串化函数吗?!

4

1 回答 1

8

我正在使用以下内容,我没有问题

encodeURIComponent(JSON.stringify(object_to_be_serialised))
于 2014-08-23T21:45:26.507 回答