JQuery Ajax循环延迟

时间:2017-10-30 08:18:33

标签: javascript php jquery ajax

我试图延迟我的ajax数据,所以循环变得有点慢! 这是我的代码

$(document).ready(function (){
$('#button').click(function(){

 $('#hide').show();
 var data = $('#textarea').val();

 var arrayOfLines = data.split("\n"); 

 var track = JSON.stringify(arrayOfLines);
 var item = "";

 var lines = $('#textarea').val().split('\n');

这是循环

 for (var i = 0; i < lines.length; i++) {
     item = lines[i];
            $.ajax({
            type: 'GET',
                url: 'cookie.php',
                dataType: 'html',
                data: 'data=' + item+'&cookie='+track,
                success: function(msg){
                    $('#results').append(msg);

                }

                });
 }

});

3 个答案:

答案 0 :(得分:1)

使用递归,你可以放入一个函数lines并通过数组sendToServer,从索引0开始。该函数将从0运行到lines.length。这样您就不会对您的服务器进行DDOS:)

如果您确实需要某种任意延迟,可以在 var sendToServer = function(lines, index){ item = lines[index]; if (item.trim().length != 0){ $.ajax({ type: 'GET', url: 'cookie.php', dataType: 'html', data: 'data=' + item+'&cookie='+track, success: function(msg){ $('#results').append(msg); if (index < lines.length) { setTimeout( function () { sendToServer(lines, index+1); }, // function to call 5000 // delay in ms ); } } }); } else { sendToServer(lines, index+1); } }; sendToServer(lines, 0); 函数调用中包含超时 - 在示例中它设置为5秒。

sudo java -jar ./myapp.jar

答案 1 :(得分:0)

像这样使用:

 var timeDelay = 5000;       
    setTimeout(Function, timeDelay);

答案 2 :(得分:0)

不要在for循环中向服务器发送请求。它可以取消服务器。而不是你做了什么,你可以这样做:

for (var i = 0; i < lines.length; i++) {
     item = lines[i];
}  

$.ajax({
    type: 'GET',
        url: 'cookie.php',
        dataType: 'html',
        data: 'data=' + item+'&cookie='+track,
        success: function(msg){
            $('#results').append(msg);

        }

     });