我试图延迟我的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);
}
});
}
});
答案 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);
}
});