2015-04-17 89 views
-2

基于以下方法:http://www.ajaxblender.com/article-sources/jquery/call-settimeout-inside-of-object/index.htmlsetTimeout方法未触发

我的ajax调用仅触发一次。

<body> 
    <div id="match-data"></div> 

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
    <script> 
     jQuery(function($){ 

      function obj(){ 
       var duration = 1000; 

       var tmpFnc = function(){ exec(); }; 
       setTimeout(tmpFnc, duration); 

       function exec(){ 
        $.ajax({ 
         url: "web_service.php", 
         data: { 
          format: 'json' 
         }, 
         success: function(data){ 

          var resultHTML = ""; 
          var json = $.parseJSON(data); 

          $.each(json, function(key, val){ 

           var $team = json[key].name; 
           var $badge = json[key].crestUrl; 
           var $alt_text = json[key].shortName; 

           resultHTML += "<p>"+$team; 
           resultHTML += '<img style="width:100px;height:100px;" src="'+$badge+ '" alt="'+$alt_text+'"/></p>'; 

           // console.log(resultHTML); 
          }); 
          $("#match-data").append(resultHTML); 


         } 
        }); 
       } 
      };   

      obj = new obj(); 

     }); 
    </script> 
</body> 

在哪里我期待它每秒重复?

+0

您可以编辑,包括你试过吗?此外,最好是缩小问题的范围。 –

+0

上帝的母亲......看看里面另一个函数里面的所有这些函数里面的另一个函数...... –

回答

1

我认为你正在寻找setInterval

setInterval(exec, duration); 

,将调用exec每隔1秒,当duration1000

但是,因为你正在做一个Ajax调用,它可能会更好等待您稍等片刻之前,服务器首先响应:

success: function(data) { 
    // omitted 
    setTimeout(exec, duration); 
} 

注意:您tmpFnc功能是不必要的。

+0

我整理起来也是一团糟的所有嵌套方法。谢谢。 – cookie

+0

为什么倒票? – cookie

+0

@cookie我没有让你失望,但可能是因为你的问题有很多噪音。除非有一个非常简单的例子,否则删除不会导致问题的语句可能会更简单。 –

0

basicly改变你的代码像下面

setInterval(tmpFnc, duration); 
.... 
obj(); //not obj = new obj();