我读了很多问题,但他们不适合我的情况。 我的情况是:我的ajax查询到数据库插入信息。但在我的网络应用程序中,用户可以非常快速地点击按钮,因此以前的ajax查询没有完成,并且出现了错误。 我需要做的只是查询之间的延迟,所以以后的查询只能在完成之前完成。 下面是一个代码:如何推迟ajax查询?
$('#save').click(function(){
var user_input=$('#user').val();
var section=$('#section').val();
$('#loading_info').append('<p><img src="Images/loading.gif" alt="loading" id="loading"/></p>');
$.ajax({
url: 'submit_db.php',
type: 'POST',
data: 'section='+section+'&user_input='+user_input,
success: function(result){
$('#response').remove();
$('#loading_info').append('<p id="response">' + result + '</p>');
$('#loading').fadeOut(500, function(){
$(this).remove();
});
}
});
return false;
});
我测试,不工作:插入超时:3000到AJAX - 1个查询是好的,但在此之后,整个应用程序冻结;使用ajaxSetup()设置超时 - 相同的情况。经过测试的setInterval函数,并将Ajax查询 - 但它后没有Ajax,应用程序打开一个实施的PHP文件并冻结。
这不工作:
$('#save').click(function(){
var t=setTimeout(function(){
var user_input=$('#user').val();
var section=$('#section').val();
$('#loading_info').append('<p><img src="Images/loading.gif" alt="loading" id="loading"/></p>');
$.ajax({
url: 'submit_db.php',
type: 'POST',
data: 'section='+section+'&user_input='+user_input,
success: function(result){
$('#response').remove();
$('#loading_info').append('<p id="response">' + result + '</p>');
$('#loading').fadeOut(500, function(){
$(this).remove();
});
}
});
return false;
},3000);
});
,这是不是工作压力太大:
$('#save').click(function(){
var user_input=$('#user').val();
var section=$('#section').val();
$('#loading_info').append('<p><img src="Images/loading.gif" alt="loading" id="loading"/></p>');
$.ajax({
url: 'submit_db.php',
type: 'POST',
timeout: 3000,
data: 'section='+section+'&user_input='+user_input,
success: function(result){
$('#response').remove();
$('#loading_info').append('<p id="response">' + result + '</p>');
$('#loading').fadeOut(500, function(){
$(this).remove();
});
}
});
return false;
});
最后,这是不是太工作:提前
$.ajaxSetup({
timeout:3000,
});
谢谢
看到这个delay_method,它允许你给执行队列标签http://stackoverflow.com/a/30503848/1834212 – Miguel 2015-05-29 16:00:40