Api调用Ajax n秒GET请求

时间:2016-08-16 17:17:51

标签: javascript php jquery ajax api

API会非常频繁地显示实时值和更改,因此我尝试每秒拨打一次电话并将其显示在网页上。

我使用set_interval()每N秒尝试一次get请求调用,但这些值只加载一次而不再调用。

<p id="val"></p>
<p id="val2"></p>
<p id="val3"></p>

<script>
var xhttp = new window.XMLHttpRequest();
xhttp.open("GET", "http_url_link", true);
xhttp.send();
xhttp.onreadystatechange = myFunction(xhttp);

function myFunction() {
    if (xhttp.readyState == 4) {
        var xmlDoc = xhttp.responseXML;
        var val1= xmlDoc.getElementsByTagName('value_1')[0].childNodes[0];
        var val2 = xmlDoc.getElementsByTagName('value_2')[0].childNodes[0];
        var val3 = xmlDoc.getElementsByTagName('value_3')[0].childNodes[0];
        document.getElementById('val3').innerHTML =
        v3.nodeValue;
        document.getElementById('val').innerHTML =
        v1.nodeValue;
        document.getElementById('val2').innerHTML =
        v2.nodeValue;
    }
}
myFunction();
setInterval(myFunction, (1000));
</script>

3 个答案:

答案 0 :(得分:1)

var xhttp = new window.XMLHttpRequest();

这里xhttp对象在脚本运行时创建一次并且您获得一次正确的输出。所以你需要在1秒后调用它。

function myFunction() {
   var xhttp = new window.XMLHttpRequest();
   xhttp.open("GET", "http_url_link", true);
   xhttp.send();
   xhttp.onreadystatechange = function(){
      if (xhttp.readyState == 4) {
       var xmlDoc = xhttp.responseXML;
       var val1=xmlDoc.getElementsByTagName('value_1'[0].childNodes[0];
       var val2 = xmlDoc.getElementsByTagName('value_2')[0].childNodes[0];
       var val3 = xmlDoc.getElementsByTagName('value_3')[0].childNodes[0];
       document.getElementById('val3').innerHTML=v3.nodeValue;
       document.getElementById('val').innerHTML=v1.nodeValue;
       document.getElementById('val2').innerHTML=v2.nodeValue;
    }
  }

setInterval(myFunction,(2000));

快乐编码:)

答案 1 :(得分:0)

试试这个:

function myFunction() {
    function foo(){ alert("Hello"); }
    setTimeout(myFunction, 1000);
    foo();
}
myFunction();

答案 2 :(得分:0)

进行API调用的代码不在函数中。

function myFunction()
{
    var xhttp = new window.XMLHttpRequest();
    xhttp.open("GET", "http_url_link", true);
    xhttp.send();
    xhttp.onreadystatechange = myFunctionRes(xhttp);
}
function myFunctionRes()
{
    if (xhttp.readyState == 4)
    {
        var xmlDoc = xhttp.responseXML;
        var val1= xmlDoc.getElementsByTagName('value_1')[0].childNodes[0];
        var val2 = xmlDoc.getElementsByTagName('value_2')[0].childNodes[0];
        var val3 = xmlDoc.getElementsByTagName('value_3')[0].childNodes[0];
        document.getElementById('val3').innerHTML =
        v3.nodeValue;
        document.getElementById('val').innerHTML =
        v1.nodeValue;
        document.getElementById('val2').innerHTML =
        v2.nodeValue;
    }
}
setInterval(myFunction, (1000));