Javascript jQuery:如何在不等待请求完成的情况下发出AJAX请求并继续?
我想在JavasSript函数的“后台”发出AJAX请求,但我的脚本会等待AJAX请求完成,然后再继续执行代码Javascript jQuery:如何在不等待请求完成的情况下发出AJAX请求并继续?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我想在JavasSript函数的“后台”发出AJAX请求,但我的脚本会等待AJAX请求完成,然后再继续执行代码 $('div').hide(); $.get('/controller/action', { id: 'abc123' }, function(data){ //request completed //now update the div with the new data $('div').html(data); }
$('div').hide();
$.get('/controller/action', { id: 'abc123' },
function(data){
//request completed
//now update the div with the new data
$('div').html(data);
}
);
$('div').slideDown('slow');
//by now hopefully the div has been updated
//and the user hasn't waited too long
问题是
slideDown
动画等待执行,直到请求返回响应。如何让动画与ajax请求同时执行?您的代码应该已经在“后台”(异步)执行ajax请求了。该方法为以下简称:
$.ajax({
url: url,
data: data,
success: success,
dataType: dataType
});
默认情况下,方法是
async:true
。您的代码应该已经在“后台”(异步)执行Ajax请求了。该方法为以下简称:
$.ajax({
url: url,
data: data,
success: success,
dataType: dataType
});
默认情况下,该方法是async:true
。将slideDown()放入成功回调中
$('div').hide();
$.get('/controller/action', { id: 'abc123' },
function(data){
alert("Request completed");
//now update the div with the new data
$('div').slideDown('slow');
}
);
除非您使用async:false()为AJAX提供默认配置。将slideDown()放入成功回调中
$('div').hide();
$.get('/controller/action', { id: 'abc123' },
function(data){
alert("Request completed");
//now update the div with the new data
$('div').slideDown('slow');
}
);
除非您使用async:false()为AJAX提供默认配置。在AJAX请求完成之前,div是否可能不包含任何内容,从而产生等待的错觉
在ajax请求完成后,您是否尝试过良好的alert()调试?是否可能在ajax请求完成之前,div不包含任何内容,从而产生等待的错觉
在ajax请求之后,您是否尝试过良好的alert()调试?Hmm。您要执行的代码在哪里?是否在“请求完成”功能中?还是在$('div')。slideDown('slow')?你的代码工作正常。。。嗯,你想执行的代码在哪里?是否在“请求完成”功能中?还是在$('div')。slideDown('slow')?你的代码工作正常。。。问题是动画要等到请求返回响应后才执行。@安德鲁:真奇怪。您是否可以尝试使用$.ajax
而不是$。获取并设置async:true
?问题是动画等待执行,直到请求返回响应为止。@Andrew:这很奇怪。能否尝试使用$.ajax
而不是$。获取并设置async:true
?问题是动画等待执行,直到请求返回响应。通过将动画放入回调,它肯定会等待请求完成。我正在尝试发出请求并同时运行动画。问题是动画等待执行,直到请求返回响应。通过将动画放入回调,它肯定会等待请求完成。我正在尝试发出请求并同时运行动画。是的,警报会显示,然后在单击警报上的“确定”后,动画会继续。因此,ajax请求可能不会阻止动画,而是在ajax请求完成之前,由于div中缺少内容,动画不可见?是,警报显示,然后单击警报上的“确定”后,动画继续。因此,可能ajax请求没有阻止动画,而是在ajax请求完成之前,由于div中缺少内容,动画不可见?