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