渲染一些JSON后,我的javascript的第二部分没有执行

时间:2011-08-25 18:22:00

标签: javascript json

嘿伙计们,我想知道为什么我这个文件中的最后一个脚本无效 - 它假设从JSON中取出值并将其与设定值进行比较。感谢所有人的帮助!

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {

var url = "https://graph.facebook.com/tenniswarehouse?callback=?";


$.getJSON(url,function(json){
    var html = "<div id=\"tester\">" + json.likes + "</div>";
    //A little animation once fetched
     $('.facebookfeed').html(html);

 });
 });
 </script>
 </head>
  <body onload="timeMsg()">
   <div class="facebookfeed">
    <h2></h2>
  </div>
  <script type="text/javascript">
  var x =document.getElementById("tester").innerHTML;
  if (x < 56700) {
  document.write("worked")
  }
 else {
 document.write("didn't work")
 }
 </script>
 </body>
 </html>

2 个答案:

答案 0 :(得分:2)

你需要这个功能,比如:

function myFunc() {
  var x =document.getElementById("tester").innerHTML;
  if (x < 56700) {
     document.write("worked")
  }
  else {
     document.write("didn't work")
  }
}

然后这样称呼它:

$.getJSON(url,function(json){
    var html = "<div id=\"tester\">" + json.likes + "</div>";
    //A little animation once fetched
     $('.facebookfeed').html(html);

     myFunc();
   });

因为您在将测试程序添加到DOM之前执行该代码。

答案 1 :(得分:1)

您的头部功能是在页面加载时执行的。但是,在呈现页面时(页面加载之前)执行正文中的javascript代码,因此在AJAX请求之前执行

要解决此问题,您应该将脚本从body移动到json处理程序。那样:

$(function() {

    var url = "https://graph.facebook.com/tenniswarehouse?callback=?";

    $.getJSON(url,function(json){
        var html = "<div id=\"tester\">" + json.likes + "</div>";
        //A little animation once fetched
        $('.facebookfeed').html(html);
        var x =document.getElementById("tester").innerHTML;
        if (x < 56700) {
            document.write("worked")
        } else {
            document.write("didn't work")
        }    
    });
});