2011-10-29 43 views
2

我有包含英寸和脚标记(\“和\')的数据,来自AJAX调用的响应返回有效的JSON(\”被转义,''不)我在HTML表单中使用。jQuery .getJSON响应忽略JSON响应中的转义字符

具有以下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表单这个数据的最佳方式。

回答

1

在JavaScript中,这里是它是如何评估:

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

JSON要求反斜杠进行转义,所以 正确的语法将是"2\\\\\\\""