开发者问题收集

迭代 JSON 对象时出现的问题

2010-07-12
279

在下面的代码中,我尝试迭代 JSON 对象字符串。但是,我没有得到所需的输出。我在网页上的输出如下所示:-

+item.temperature++item.temperature++item.temperature++item.temperature+

输出温度的警报运行良好。我尝试通过迭代 JSON 对象字符串来访问值的部分似乎不起作用。有人能帮我解决这个问题吗?

代码

<body>
    <script>
    $.getJSON('http://ws.geonames.org/weatherJSON?north=90&south=-9.9&east=-22.4&west=55.2',
      function(data) {
        $.each(data.weatherObservations, function(i, item) {
          $("body").append("+item.temperature+");
          if (-i == 3-) return false;
        });
        alert(data.weatherObservations[0].temperature);
      });
    </script>
</body>
3个回答

不要在 .append() 部分的 $("body").append("+item.temperature+"); 中使用引号。

应该是

$(document.body).append(item.temperature);

像您那样用引号编写该表达式只会一遍又一遍地添加 string 。Java//Ecmascript 将引号内的任何内容解释为字符串文字。

请注意,我还用 document.body 替换了 "body" 。这主要是出于性能//访问原因,所以业力更好。

jAndy
2010-07-12

您的代码正在迭代,但您正在附加“+item.temperature+”,您不想执行类似

$("body").append("Temp is " + item.temperature);

$("body").append(item.temperature);
的操作吗?
Rebecca Chernoff
2010-07-12

"+item.temperature+" 表示字符串 "+item.temperature+"

"pre" + item.temperature + "post" 将变量连接到字符串。

$.getJSON('http://ws.geonames.org/weatherJSON?north=90&south=-9.9&east=-22.4&west=55.2', 
  function (data) {
    $.each(data.weatherObservations, function (i, item) {
        $("body").append(item.temperature + ",");
        if (i == 3) return false;
    });
    alert(data.weatherObservations[0].temperature);
});
gblazex
2010-07-12