2016-11-21 72 views
-1

我有這樣的代碼重複Ajax請求:如何根據返回

.on('finish.countdown', function() { 
        var onEndAuction = function() { 
         $.ajax({ 
          type: "POST", 
          url: "{{path('app_auction_end')}}", 
          data: {auctionId:{{ aReturn.oAuction.getId()}}}, 
          success: function (data) { 
           console.log(data); 
           if (data == 0) { 
            setTimeout(onEndAuction, i_timer); 
           } else { 
            document.location.reload(true); 
           } 
          } 
         }); 
        }; 
       }); 

我想如果數據== 0需要作出app_auction_end另一個呼叫10秒後。你能幫我嗎 ? THX提前對不起我的英語

+0

你幾乎在那裏,只需要調用onEndAuction,做'varEndAuction ='什麼都不做......所以在你的函數結束後有 - >'}; onEndAuction(); ' – Keith

+0

@Keith對不起,我不承認主意:( –

+0

好吧,我會做一個答案.. – Keith

回答

1

給操作命名函數:

var someFunction = function() { 
    $.ajax({ 
     //... 
    }); 
}; 

,你會再使用您的.on()電話:

.on('finish.countdown', someFunction) 

而在success處理程序中,設置該功能超時:

if (data == 0) { 
    setTimeout(someFunction, i_timer); 
} 
+0

我編輯了這個問題,但不工作 –

+0

@HareaCosticla:由於您在另一個函數的範圍中定義了函數,你實際上並不是首先調用函數,要麼在窗口範圍內定義它,並將它用作本答案中建議的'.on()'的回調函數,或者在定義時調用'onEndAuction'函數它(從長遠來看,前者似乎更容易理解)。 – David

0
.on('finish.countdown', function() { 
    var onEndAuction = function() { 
    $.ajax({ 
     type: "POST", 
     url: "{{path('app_auction_end')}}", 
     data: {auctionId:{{ aReturn.oAuction.getId()}}}, 
     success: function (data) { 
     console.log(data); 
     if (data == 0) { 
      setTimeout(onEndAuction, i_timer); 
     } else { 
      document.location.reload(true); 
     } 
     } 
    }); 
    }; 
    //do our initial call otherwise it will never get called. 
    onEndAuction(); 
}); 
相關問題