2010-07-12 7 views
0

Dans le code ci-dessous, j'ai tenté d'effectuer une itération sur la chaîne d'objet JSON. Cependant, je n'obtiens pas la sortie désirée. Ma sortie sur la page Web ressemble à quelque chose comme: -Problème lors de l'itération à travers l'objet JSON

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

L'alerte qui délivre la température fonctionne bien. La partie où j'essaie d'accéder à la valeur en itérant à travers la chaîne d'objet JSON ne semble pas fonctionner. Quelqu'un pourrait-il m'aider à résoudre ce problème?

code

<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> 

Répondre

3

Ne pas utiliser les guillemets dans les $("body").append("+item.temperature+"); dans la partie .append().

devrait être

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

Writting cette expression avec des citations comme vous l'avez fait, tout ajoute un string plus et plus. Java // Ecmascript interprète tout ce qui contient des guillemets sous la forme d'un littéral de chaîne.

Notez que j'ai également remplacé "body" par document.body. Cela a principalement des raisons de performance // d'accès, donc un meilleur karma.

1

Votre code est Itère, mais vous annexant "+ item.temperature +", tu ne veux pas faire quelque chose comme

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

ou

$("body").append(item.temperature); 
0

"+item.temperature+" signifie une chaîne qui est "+item.temperature+"

"pre" + item.temperature + "post" va concaténer la variable aux chaînes.

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