2011-10-29 10 views
2

インチとフットマーク(\ "と\ ')を含むデータがあり、AJAXコールからの応答が有効なJSONを返す(\"エスケープされ、私はHTML形式で使用しています。以下のJSON応答でjQuery .getJSONレスポンスでJSONレスポンスでエスケープされた文字を無視する

:; 2インチのサイズが適切にJSONを」\をエスケープしてい

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

注意(簡潔にするため、この例の他の項目では、したがって、リストを複数の価格/サイズコンボを有していてもよいです)。

$.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 
}); 

成功関数の戻り値:エスケープ文字が含まれていない返されたデータを(jQueryの.getJSONを使用して)、次のJavaScriptで

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

size[0]データは、もはや逃れ"

質問 1.なぜJSONは、成功応答で尊重されていないデータをエスケープしませんか? HTML形式でこのデータをエスケープするための最良の方法は何か

  1. そして笑いのために。 JavaScriptで

答えて

1

、ここではそれが評価される方法です。

  • String("2\"")リターンが"2""
  • String("2\\\"")戻り"2\""
  • String("2\\")戻り"2\"

をJSONバックスラッシュをエスケープすることを要求し、だから適切な構文は"2\\\\\\\""

です