Javascript jQuery:如何在不等待请求完成的情况下发出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); }

我想在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请求了。该方法为以下简称:

$.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中缺少内容,动画不可见?