从函数存储Var

时间:2013-04-30 15:15:39

标签: javascript html json

感谢早期问题的帮助,我能够检索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的{​​{1}}中,然后在我的html中使用它,就像这样  它在我的页面上为co2变量打印co2

警报undefinedalert(result.Cumulative_CO2);都会打印相同的内容,因此出于某种原因,co2在离开函数时不会保留其值。任何指针都将非常感激。

更新

这就是URL调用返回alert(co2);

的内容

2 个答案:

答案 0 :(得分:3)

传递给ready()的函数在构建DOM之后才会运行。

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

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

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

答案 1 :(得分: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>
  • 这是未经测试的代码,但它非常简单,应该可以使用。