每秒刷新JS脚本值

时间:2017-06-15 14:50:01

标签: javascript json

我有一个获得价值的脚本"平均值"来自JSON数组

<p id="ticker"></p>


<script>
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function () {
  myObj = JSON.parse(this.responseText);
  document.getElementById("ticker").innerHTML = myObj.average; };
  xmlhttp.open("GET", "https://bitbay.net/API/Public/BTC/ticker.json", true);
  xmlhttp.send();
</script>

我的问题是每隔几秒钟刷新一次<p>。我浪费了一整天才能做到这一点。你能帮帮我吗?

5 个答案:

答案 0 :(得分:0)

你能做到这一点:

<script>
window.setInterval(function(){
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function () {
  myObj = JSON.parse(this.responseText);
  document.getElementById("ticker").innerHTML = myObj.average; };
  xmlhttp.open("GET", "https://bitbay.net/API/Public/BTC/ticker.json", true);
  xmlhttp.send();
}, 1000);
</script>

每秒运行一次“功能”(1000毫秒)。我建议你把它扔进另一个函数,使其更像:

<script>
window.setInterval(updateTicker(), 1000);

function updateTicker(){
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function () {
        myObj = JSON.parse(this.responseText);
        document.getElementById("ticker").innerHTML = myObj.average; 
    };
    xmlhttp.open("GET", "https://bitbay.net/API/Public/BTC/ticker.json", true);
    xmlhttp.send();
}
</script>

答案 1 :(得分:0)

只需使用setInterval(()=>{//code }, time)重复获取JSON。

setInterval(getAvg, 5*1000); // every 5 seconds

function getAvg() {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function () {
    myObj = JSON.parse(this.responseText);
    document.getElementById("ticker").innerHTML = myObj.average; 
  };
  xmlhttp.open("GET", "https://bitbay.net/API/Public/BTC/ticker.json", true);
  xmlhttp.send();
}
<p id="ticker"></p>

答案 2 :(得分:0)

一个简单的setInterval应该可以解决问题。

<p id="ticker"></p>

<script>  
  var ticker = document.getElementById("ticker");  // Cache that (faster)

  function updateP(){
     //... Do whatever
     ticker.innerHTML = "..."
  }

  updateP(); // Update once immediately...
  setInterval(updateP, 3000) // ...and then again every 3000ms
</script>

答案 3 :(得分:0)

您可以使用setInterval()(以指定的时间间隔(以毫秒为单位)调用函数或计算表达式)来实现此目的:

function getValue(){
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState==4 && xmlhttp.status==200){
        var myObj = JSON.parse(this.responseText); 
        document.getElementById("ticker").innerHTML = myObj.average; 
    }  
  };
  xmlhttp.open("GET", "https://bitbay.net/API/Public/BTC/ticker.json", true);
  xmlhttp.send();
}

setInterval(getValue, 1000);
<p id="ticker"></p>

更新以修复我们应process the response only if the request was successfulparse例外情况。

答案 4 :(得分:-2)

<p>Click the button to wait 3 seconds, then alert "Hello".</p>
<p id="text">After clicking text will change here and count starts for every 0.5 seconds. This goes on forever...</p>
<button onclick="myFunction()">Try it</button>

<script>
var i=0;
function myFunction() {

    setInterval(function(){ document.getElementById('text').innerHTML = i++; }, 500);
}
</script>

</body>
</html>