2013-02-11 73 views
0

好吧,簡單的事情在JavaScript中,我甚至無法解決甚至在網上搜索。我猜我甚至找到了正確的東西,但不能放在正確的地方。Javascript狀態循環

此代碼告訴我一個流是在線還是離線。但我該如何處理狀態並每5秒更新一次?

$(function() { 
    $.ajax({ 
     type: 'GET', 
     url: "http://xmychannelx.api.channel.livestream.com/2.0/livestatus.json?callback=?", 
     dataType: 'jsonp', 
     success: function (jsonp) { 
      // parse the JSON data on success 
      var channel = eval(jsonp); 
      liveChannel = channel.channel.isLive; 

      if (liveChannel == true) { 
       document.getElementById('mydiv').innerHTML = '<p style="color: #00FF00">Online!</p>'; 
      } else { 
       document.getElementById('mydiv').innerHTML = '<p style="color: #C0C0C0">Offline!</p>'; 
      } 


     } 
    }); 
}); 
+0

設置一個定時器,每5秒觸發一次ajax調用。 – spiritwalker 2013-02-11 02:51:23

回答

1

實施例:

var myAjaxCall = function() { 
$.ajax({ 
    type: "GET", 
    url: options.feedUrl, 
    dataType: "xml", 
    async:options.sync, 
    success: function(xml) { 
     // todo 
    } 
}; 

var ResInterval = window.setInterval(myAjaxCall, 60000); // 60 seconds 

要停止:

window.clearInterval(ResInterval); 
+0

調用setInterval方式與使用eval相同...(這被認爲是一種不好的做法)。您應該使用另一個函數(名稱或匿名)。 – KaeruCT 2013-02-11 02:55:30

1

使用設置超時函數

​​3210
0

嘗試了這一點:

function checkStatus() { 
    $.ajax({ 
     type: 'GET', 
     url: "http://xmychannelx.api.channel.livestream.com/2.0/livestatus.json?callback=?", 
     dataType: 'jsonp', 
     success: function (jsonp) { 
      // parse the JSON data on success 
      var channel = eval(jsonp); 
      liveChannel = channel.channel.isLive; 

      if (liveChannel == true) { 
      document.getElementById('mydiv').innerHTML = '<p style="color: #00FF00">Online!</p>'; 
      } else{ 
       document.getElementById('mydiv').innerHTML = '<p style="color: #C0C0C0">Offline!</p>'; 
      } 
     } 
    }); 
} 

$(function() { 
    setInterval(checkStatus, 5000); 
}); 

每5000毫秒(5秒)調用一次函數checkStatus

+0

它像我的代碼一樣工作,但沒有循環,也許是因爲代碼是在HTML內的.js文件中?不在html上。 – brchannelbr 2013-02-11 03:20:18

+0

我不好,我用'setTimeout'而不是'setInterval'。 'setTimeout'只調用一次函數,但'setInterval'無限期地調用它。我已經修改了我的答案。 – KaeruCT 2013-02-11 03:25:46