您好我有一个简单的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转储。
任何帮助都非常感激。
答案 0 :(得分: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
。
答案 1 :(得分:3)
你的JSON可能是一个字符串。你必须先解析它。使用
var obj = JSON.parse(data);
alert(obj.max_output_watts);
答案 2 :(得分: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"
}
答案 3 :(得分:0)
你必须解析为JSON,因为它看起来不像json,因为该方法是未定义的:
这是jQuery的符号:
data = $.parseJSON(data);
data.max_output_watts;
以下是你应该如何做的事情:
data = JSON.parse(data);
data.max_output_watts;
问候!