javascript – jquery ajax同步调用beforeSend

前端之家收集整理的这篇文章主要介绍了javascript – jquery ajax同步调用beforeSend前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个函数叫做:
function callAjax(url,data) {
 $.ajax(
   {
     url: url,// same domain
     data: data,cache: false,async: false,// use sync results
     beforeSend: function() {
       // show loading indicator
     },success: function() {
       // remove loading indicator 
     }
   }
  );
}

代码中,我调用“callAjax”X次,我想同步更新数据.它按预期完成,但有一个问题:加载项不会在beforeSend函数显示.如果我将async设置为true,它可以正常工作,但更新不会同步完成.

我尝试了几件事情没有成功.我尝试将加载指示符放在ajax调用之前,如下所示:

function callAjax(url,data) {
  // show loading div

  $.ajax(
    {
      // same as above
    }
   );
}

但是由于某些原因,它不想显示加载指示器.我注意到一个奇怪的行为,当我把一个“警报”在beforeSend和加载指示符出现在这种情况下,但我不是弹出一个消息框.

有什么想法?

解决方法

像这样做一个同步调用就像放置一个“alert()”框.一些浏览器完全停止了他们正在做的,直到收到HTTP响应.

因此在你的代码中,在调用“$.ajax()”函数开始之后,在接收到响应之前没有任何反应,而在代码中,下一个事情就是“成功”处理程序.

一般来说,除非您对服务器有信心,否则使用异步调用更好.当您这样做时,浏览器立即返回其工作,并在后台简单地监听HTTP响应.响应到来时,您的成功处理程序将被调用.

原文链接:https://www.f2er.com/ajax/152717.html

猜你在找的Ajax相关文章