2010-09-01 53 views
0

所以有这样的代码:jQuery的/使用Javascript - X秒后运行AJAX请求

$('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,但它不工作:( 阿贾克斯啄页面加载后立即运行,而不是10秒后...

我究竟做错了什么?

回答

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

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

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变量每次调用传递。

+0

你是对的,谢谢:) – Alex 2010-09-01 13:32:42