4

こんにちは、単純な JSON 出力があります。

"{
   \"max_output_watts\": 150, 
   \"frame_length_inches\": \"62.20\",
   \"frame_width_inches\": \"31.81\"
 }"

私は次のような関数で使用します:

...
$.getJSON(pop_model_dims_url, {model_id: selected}, function(data, jqXHR){
              alert(data.max_output_watts);
          });
...

アラートは今のところ単なるプレースホルダーですが、アラート値が「未定義」である理由がわかりません。私が行った場合:

...
$.getJSON(pop_model_dims_url, {model_id: selected}, function(data, jqXHR){
              alert(data);
          });
...

期待どおり、完全な json ダンプを取得します。

どんな助けでも大歓迎です。

4

4 に答える 4

5

alert(data);あなたは完全な JSON ダンプを提供するので、これはおそらく JSON がサーバー上で二重にエンコードされていることを意味します。

jQuery は一度解析しますが、もう一度解析する必要があります。

$.getJSON(pop_model_dims_url, {model_id: selected}, function(data, jqXHR){
    data = $.parseJSON(data);
    alert(data.max_output_watts);
});

もちろん、これは適切な修正ではありません。適切な解決策は、サーバー上で修正することです。

それができたら、$.parseJSONもう必要ありません。

于 2012-11-06T20:29:56.383 に答える
3

JSON はおそらく文字列です。最初に解析する必要があります。使用する

var obj = JSON.parse(data);
alert(obj.max_output_watts);
于 2012-11-06T20:29:45.800 に答える
1

jQuery getJSONは、JSON を自分で解析する必要があります。JSON が次のようになった場合:

"{
   \"max_output_watts\": 150, 
   \"frame_length_inches\": \"62.20\",
   \"frame_width_inches\": \"31.81\"
 }"

パーサーが文字列と間違えました。

次のようなプレーンテキストとして出力されるはずです。

{
   "max_output_watts": 150, 
   "frame_length_inches": "62.20",
   "frame_width_inches": "31.81"
 }
于 2012-11-06T20:33:38.340 に答える
0

メソッドが定義されていないため、json ではないように見えるため、JSON に解析する必要があります。

jQuery での表記は次のとおりです。

data = $.parseJSON(data);

data.max_output_watts;

そして、これなしで行う方法は次のとおりです。

data = JSON.parse(data);

data.max_output_watts;

よろしく!

于 2012-11-06T20:31:56.257 に答える