1

函数使用该jquery.ajax()方法从服务器获取数据并将其用作返回值。如果我使用async=true该函数会过早地返回空值。如果我使用async=false函数的等待时间太长。我尝试在请求之前切换 div 显示旋转时钟,但直到请求结束后 div 才会出现。

关于如何不锁定浏览器或显示等待图标/符号/文本的任何建议?

4

3 回答 3

2

你不能。同步请求将锁定浏览器,包括您可能正在进行的任何动画或可能未决的 dom 修改 - 这就是不鼓励它们的原因。很有可能,您正试图从触发 ajax 请求的函数中返回一个值,这对异步请求不起作用 - 修改您的逻辑以处理成功回调中的响应处理,一切都会好起来的......

于 2010-08-02T06:00:10.227 回答
1

为了不锁定浏览器,您应该使用异步请求,也许您的代码或 ajax 响应需要重构。

但是如果你仍然不想使用异步请求,你可以这样做:

  1. 插入旋转时钟并显示
  2. 准备好后(我的意思是回调),发出 ajax 请求
  3. 最后,取下时钟
于 2010-08-02T04:35:12.193 回答
1

一种方法是放置图像(正在加载... gif 动画)。在发送 ajax 之前显示它。然后隐藏成功。就像下面一样。

$.ajax({
  url: 'ajax/test.html',
  beforeSend : function(){
     $('#LodingImg').show(); // show image..
  },
  success: function(data) {
    $('#LodingImg').hide(); // hide image
    $('.result').html(data);
    alert('Load was performed.');
  }
});
于 2010-08-02T04:36:12.530 回答