jQuery / Javascript - 在X秒后运行AJAX请求

时间:2010-09-01 13:09:24

标签: javascript jquery ajax forms

所以我有这段代码:

 $('input.myinput').each(function(){
    var id = $(this).val();
    var myajax = function(){
      $.ajax({
        url: ajax_url,
        type: "GET",
        data: ({
          code: id
        }),
        beforeSend: function() {  },
        error: function(request){ },
        success: function(data) { alert(data); }
      });
      setTimeout('myajax()', 10000);
    }
    myajax();
 });

我希望上面的ajax()请求在页面加载后运行10秒,所以我使用了setTimeout,但它不起作用:( ajax thingy在页面加载后立即运行,而不是在...之后10秒运行。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

$('input.myinput').each(function(){

    var id = $(this).val();

    var myajax = function() {
      $.ajax({
        url: ajax_url,
        type: "GET",
        data: ({
          code: id
        }),
        beforeSend: function() {  },
        error: function(request){ },
        success: function(data) { alert(data); }
      });

      //if you need to run again every 10 seconds
      //setTimeout(myajax, 10000);

    };

    setTimeout(myajax, 10000);
 });

答案 1 :(得分:1)

我会做一些不同的事情......

function myajax(id) {
  $.ajax({
    url: ajax_url,
    type: "GET",
    data: ({
      code: id
    }),
    error: function(request){ },
    success: function(data) { alert(data); }
  });
  setTimeout('myajax(id)', 10000);  // you really want it to run AGAIN in another 10 seconds?
}

...

$(document).ready(function() {
   $('input.myinput').each(function(){
      var id = $(this).val();
      setTimeout('myajax(' + id + ')',10000);
   });
});

没有理由将myajax重新声明为每个输入的新函数,只要声明一次并在每次调用时传入一个新的ID变量。