2011-10-29 42 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\\\\\\\""