2015-12-17 121 views
0

即時通訊有一張圖表,每5秒更新一次以顯示有多少用戶進入建築物,並且用戶可以選擇選擇每個樓層有多少用戶。這是每5秒每5秒執行一次jQuery更改事件

下面是我的代碼來獲取用戶輸入的建築物

var interval = 5000; 
function get_Users() { 
    var users= $.ajax({ 
      type: 'POST', 
      url: '<?php echo base_url('index.php')?>/building/feed', 
      data: $(this).serialize(), 

      success: function (users) { 
       $('.current').html(users); 

      }, 
      complete: function (users){ 

        setTimeout(get_Users, interval); 
      } 
    }); 
} 
setTimeout(doFeed, interval); 
以下

用於獲取用戶在每個樓層還更新

$(document).on('change','.floor',function(){ 
    $.ajax({ 
     url: 'floor/chart', 
     type: 'post', 
     data: asset, 
     dataType: 'json', 
     success: function (users) { 

      $(".current").html(users.floor); 
     }, 


    }); 
}); 

我需要什麼do是成功更改後,每5秒發佈並獲取圖表值。

這怎麼辦?任何幫助將不勝感激。

+0

我不認爲這兩個腳本都在同一頁面上運行,是嗎? – Rayon

+0

你不應該使用'setInterval'而不是'setTimeout'嗎? –

+0

_doFeed_是setTimeout中正確的一個調用嗎? – Jai

回答

2

您可以通過爲change處理程序創建一個命名函數並在第一個函數完成後觸發timeout函數來完成此操作,因爲您已爲代碼中的其他函數完成該函數。

$(document).on('change','.floor',changeFloorHandler); 

function changeFloorHandler() { 
    $.ajax({ 
    url: 'floor/chart', 
    type: 'post', 
    data: asset, 
    dataType: 'json', 
    success: function (users) { 
     $(".current").html(users.floor); 
    }, 
    complete: function (users){ 
     setTimeout(changeFloorHandler, interval); 
    } 
    }); 
} 

注:我建議你在你的代碼中的常見ajax功能與自定義參數持有timeout而不是多個函數定義callback功能參考,以避免冗餘代碼。