0

我想example.com/id=使用 JS/jQuery 每 5 秒打开一个具有不同 ID 的链接。

我试过这个:

<script type='text/javascript'>
setInterval(function() {
    var i = 1;
    var request = new XMLHttpRequest();
    request.onreadystatechange = function() {
         if (request.readyState == 4 && request.status == 200) {
            console.log(request.responseText);
         }
      }
     var add = 'example.com?id='+i;      
    request.open('GET', add, true);
    i = i + 1;
    request.send();

}, 5000);
</script> 

但这对我不起作用。

我应该怎么办?

4

3 回答 3

2

由于您已使用 jquery 对其进行了标记,因此这是一种方法:

$(function() {
    var id = 1;
    setInterval(function(){ 
        $.get("example.com", { id: id }, function(data) {
            console.log(data);
            id++;
        })
        .fail(function(xhr, status, error) { 
            console.log("XHR:: " + xhr + " | Status:: " + status + " | Error:: " + error);
        });
    }, 5000);
});
于 2013-08-25T08:56:28.343 回答
1

演示

您必须在 ivar i=1;之外指定声明setInterval()

尝试这个

代码

var i = 1;
self.setInterval(function(){

    var request = new XMLHttpRequest();
    request.onreadystatechange = function() {
         if (request.readyState == 4 && request.status == 200) {
            console.log(request.responseText);
            alert(request.responseText);  // alert response
         }
      }
     var add = 'example.com?id='+i;      
    request.open('GET', add, true);
    i = i + 1;
    request.send();
},5000);

希望这有帮助,谢谢

于 2013-08-25T09:28:09.493 回答
1

您正在使用局部变量i,因此对于每个间隔,此变量都会重置为其初始值 1。尝试使用全局变量而不是局部变量:

var i = 1;
setInterval(function() {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function() {
         if (request.readyState == 4 && request.status == 200) {
            console.log(request.responseText);
         }
      }
     var add = 'example.com/id='+i;      
    request.open('GET', add, true);
    i = i + 1;
    request.send();

}, 5000);

或避免将变量放入全局范围。您可以将函数包装在立即函数中。像这样:

(function(){
    var i = 1;
    setInterval(function() {
        var request = new XMLHttpRequest();
        request.onreadystatechange = function() {
             if (request.readyState == 4 && request.status == 200) {
                console.log(request.responseText);
             }
          }
         var add = 'example.com/id='+i;      
        request.open('GET', add, true);
        i = i + 1;
        request.send();

    }, 5000);
})();
于 2013-08-25T08:51:25.140 回答