0

感谢对较早问题的帮助,我能够检索 JSON 并从中访问信息。

供将来参考的最终工作代码

<script> 
    var co2;
    var url="/solarpv/api/co2/list"
    var jsonObject;

    $(document).ready(function(){
       $.getJSON(url,function(result){
          var jsonObject = result;
          alert(result[0].Cumulative_CO2);
          co2 = result[0].Cumulative_CO2;
          alert(co2);
          $('#ajaxRequest').html("An average person uses " + co2 + " pounds of c02");

       });
    }); 
</script>

<h3> Some CO2 Comparisons </h3>
<p style="width:600px;">  </p>
<ul>
    <li>An average person produces 1.98 pounds a day of CO2. </li>
    <li> Plants absorb .0040786 lbs per meter squared per day. </li>
    <li> An average tree absorbs 48.061 pounds of CO2 per year. </li>
    <li id="ajaxRequest"> 
       <script>
          document.write("An average person uses " + co2 + " pounds of c02");
       </script>
    </li>
</ul>

但是,当我将结果存储在var调用中co2,然后像这样在我的 html 中使用它时,它会打印undefined我页面上的 co2 变量。

警报alert(result.Cumulative_CO2);alert(co2);打印相同的东西,所以由于某种原因,co2 在离开函数时没有保持其值。任何指针将不胜感激。

更新

这就是 URL 所返回的内容[{"Cumulative_CO2":"406465.968076","Year":"2013","Month":"3","Day":"30"}]

4

2 回答 2

3

您传递给的函数ready()在构建 DOM 之前不会运行。

getJSON将发送一个 HTTP 请求然后完成(允许继续执行)。在收到 HTTP 响应之前,您传递给的函数getJSON()不会运行。

在这两个事件发生之前,您将无法使用响应数据。在那之前它会是undefined

移动您使用数据的逻辑,使其位于您传递给getJSON. 这就是在那里有一个回调函数的意义所在。

于 2013-04-30T15:18:30.267 回答
3

当 $.getJSON 完成加载后,只需将您的变量注入段落中。这样,一旦存储了对象并创建了 co2,jQuery 就会将句子更改为您想要的正确内容,并且将插入变量。这是一个例子。

<script> 
    var co2;
    $(document).ready(function(){
       $.getJSON(url,function(result){
          var jsonObject = result;
          alert(result.Cumulative_CO2);
          co2 = result.Cumulative_CO2;
          $('p').html('random co2 fact here ' + co2 + ' pounds of c02');
       });
    }); 
</script>
  • 这是未经测试的代码,但它非常简单并且应该可以工作。
于 2013-04-30T15:29:52.600 回答