简体   繁体   English

如何定期制作xmlhttprequest?

[英]How to make xmlhttprequest periodically?

I want to loop an httprequest every 5 seconds. 我想每5秒循环一次httprequest。

Here is my code : 这是我的代码:

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

I tried to put this whole code in a function and called 我试图将整个代码放在一个函数中,然后调用

setInterval(myFunction,5000);

This works. 这可行。 However the table is displaying several times. 但是,该表显示了几次。

I tried 我试过了

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

and this doesn't work. 这是行不通的。 The request is made only once. 该请求仅发出一次。

Any advice ? 有什么建议吗?

Thank you 谢谢

You can clear the table before populating it with the server response 您可以在用服务器响应填充表之前清除表

Answer 回答

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

Use setInterval(myFunction,5000); 使用setInterval(myFunction,5000); to make periodic request. 提出定期要求。

Edited 编辑

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM