如何定期制作xmlhttprequest?

时间:2015-04-08 09:11:23

标签: javascript

我想每5秒循环一次httprequest。

这是我的代码:

var xmlhttp2 = new XMLHttpRequest();
var url2 = "http:...";
xmlhttp2.onreadystatechange = function() {
 if (xmlhttp2.readyState == 4 && xmlhttp2.status == 200) {
    var response2 = xmlhttp2.responseText;
    var response2 = xmlhttp2.responseText;
    var json2  = JSON.parse(response2); 
    for (var i = 2; i < json2.length; i++){
        document.getElementById('table2').innerHTML += '<tr><td>' + json2[i].nm + '</td><td>' + json2[i].id + '</td><td id="uid_'+i+'">' + json2[i].stn + '</td></tr>';
 }

}
xmlhttp2.open("GET", url2, true);
xmlhttp2.send();

我试图将整个代码放在一个函数中并调用

setInterval(myFunction,5000);

这很有效。然而,该表显示了几次。

我试过

setInterval("xmlhttp2.send();",5000);

这不起作用。请求只进行一次。

有什么建议吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以在使用服务器响应

填充表之前清除该表

<强>答案

var xmlhttp2 = new XMLHttpRequest();
var url2 = "http:...";
xmlhttp2.onreadystatechange = function() {
 if (xmlhttp2.readyState == 4 && xmlhttp2.status == 200) {
    var response2 = xmlhttp2.responseText;
    var response2 = xmlhttp2.responseText;
    var json2  = JSON.parse(response2);
    var table = document.getElementById('table2');
    table.innerHTML = '';
    for (var i = 2; i < json2.length; i++){
        table.innerHTML += '<tr><td>' + json2[i].nm + '</td><td>' + json2[i].id + '</td><td id="uid_'+i+'">' + json2[i].stn + '</td></tr>';
 }

}
xmlhttp2.open("GET", url2, true);
xmlhttp2.send();

使用setInterval(myFunction,5000);定期发出请求。

<强>被修改

var xmlhttp2 = new XMLHttpRequest();
    var url2 = "http:...";
    xmlhttp2.onreadystatechange = function() {
     if (xmlhttp2.readyState == 4 && xmlhttp2.status == 200) {
        var response2 = xmlhttp2.responseText;
        var response2 = xmlhttp2.responseText;
        var json2  = JSON.parse(response2);
        var tableBody = document.getElementById('table2Body');
        tableBody.innerHTML = '';
        for (var i = 2; i < json2.length; i++){
            tableBody.innerHTML += '<tr><td>' + json2[i].nm + '</td><td>' + json2[i].id + '</td><td id="uid_'+i+'">' + json2[i].stn + '</td></tr>';
     }

    }
    xmlhttp2.open("GET", url2, true);
    xmlhttp2.send();