【问题标题】:jQuery .getJSON response ignoring escaped chars in JSON responsejQuery .getJSON 响应忽略 JSON 响应中的转义字符
【发布时间】:2011-12-17 22:22:30
【问题描述】:

我的数据包括英寸和脚标记(\" 和 \'),来自 AJAX 调用的响应返回有效 JSON(\" 被转义,而 ' 不是),我在 HTML 表单中使用.

使用以下 JSON 响应:(其他商品可能有多个价格/尺寸组合,因此是列表;此示例为简洁起见)

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

注意 2 英寸的大小有正确的 JSON 转义 \"。

使用以下 javascript(使用 jQuery .getJSON)返回的数据不包括转义字符:

$.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 表单中转义这些数据的最佳方法是什么。

【问题讨论】:

    标签: jquery ajax json escaping


    【解决方案1】:

    在 JavaScript 中,它的计算方式如下:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 2011-07-30
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-30
      相关资源
      最近更新 更多