在 Ajax POST 和 JSON 中发送特殊字符
Sending special characters in Ajax POST and JSON
@SOLVED
正如James M. Lay所解释的那样,我应该将我的内容类型从application/x-www-form-urlencoded
更改为application/json
它隐含在一个错误中,因为似乎只有 UrlEnconded 类型在服务器端(至少在 PHP 中(生成 POST 数组。所以我不得不改变我在服务器脚本中接收/处理请求的方式
$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的方法吗?我必须构建自己的字符串化函数吗?!
我使用以下方法,我没有问题
encodeURIComponent(JSON.stringify(object_to_be_serialised))
相关文章:
- 如何解析json中的特殊字符
- JSON编码一个包含#和其他特殊字符的字符串
- 用Javascript替换从JSON中获取的数组数据特殊字符
- json-break-html中的特殊字符
- Titanium Mobile JSON 和 Android 中的特殊字符
- 将特殊字符字符串到 JSON 字符串化非法令牌中
- 使用特殊字符解析 JSON
- 如何在JSON字符串中使用特殊字符
- 如何使用带有特殊字符的jquery解析Json
- 通过某些特殊字符或字符序列进行拆分来解析JSON输出
- JSON通信损坏了特殊字符
- 如何避免在Javascript中创建Json对象时使用特殊字符
- JSON分析因特殊字符而失败
- 在 Ajax POST 和 JSON 中发送特殊字符
- 从JSON到xml的特殊字符
- 如何添加具有特殊字符的字符串作为json键
- Js - json.解析-保留特殊字符
- JSON.用特殊字符解析
- JSON Javascript特殊字符如何获取值
- JSON中的特殊字符会破坏JS