如何定期发出xmlhttprequest

How to make xmlhttprequest periodically?

本文关键字:xmlhttprequest 何定期      更新时间:2023-09-26

我想每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);

但这不起作用。请求只发出一次。

有什么建议吗?

感谢

您可以在使用服务器响应填充表之前清除该表

回答

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();