2015-04-17 60 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();