我想在我的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').slideDown('slow');
//by now hopefully the div has been updated
//and the user hasn't waited too long
问题是slideDown
动画在请求返回响应之前等待执行。如何让动画与ajax请求同时执行?
答案 0 :(得分:4)
您的代码应该已经“在后台”(异步)执行Ajax请求。 jQuery.get()
方法是:
$.ajax({
url: url,
data: data,
success: success,
dataType: dataType
});
默认情况下,jQuery.ajax()
方法为async: true
。
答案 1 :(得分:1)
将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
(doc)为AJAX提供默认配置。
答案 2 :(得分:0)
是否可能div不包含任何内容,直到ajax请求完成,因此会产生等待的错觉?
您是否在ajax请求之后尝试了旧的alert()调试?