2013-02-11 59 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