jQuery .getJSON响应忽略JSON响应中的转义字符

时间:2011-10-29 17:18:39

标签: jquery ajax json escaping

我有包含英寸和英尺标记(\“和\')的数据,来自AJAX调用的响应返回有效的JSON(”已转义,而不是“)我在HTML表单中使用

以下JSON响应:(其他项目可能有多个价格/大小组合因此列表;此示例为简洁起见)

{"pl":{"common":"","price":[219],"size":["2\""]}}

请注意,2英寸的大小具有正确的JSON转义\“。

使用以下javascript(使用jQuery .getJSON),返回的数据不包含转义的char:

$.getJSON(url,
    {data},
    function(json){
        var obj = json.pl.size;
        var options = '<option value="">Size</option>';
        for (var i = 0; i < obj.length; i++) {
        // possible for size to have \' and/or \" chars
            options += '<option value="' + obj[i] + '">' + obj[i] + '</option>';
        }
    // populate the select box with the options
});

成功函数返回:

json: Object
    pl: Object
        common: ""
        price: Array[1]
        size: Array[1]
            0: "2""

请注意,size[0]数据不再具有转义"

问题 1.为什么在成功响应中没有遵守JSON转义数据?

嘻嘻哈哈:

  1. 在HTML表单中转义此数据的最佳方法是什么。

1 个答案:

答案 0 :(得分:1)

在JavaScript中,以下是评估方式:

  • String("2\"")返回"2""
  • String("2\\\"")返回"2\""
  • String("2\\")返回"2\"

JSON要求对反斜杠进行转义,因此正确的语法为"2\\\\\\\""