javascript - 在 ajax 调用发生时暂停用户

标签 javascript jquery ajax wordpress

我在页面上有几个按钮,单击这些按钮时会触发 ajax 调用,然后访问数据库。
单击后,我希望用户在 ajax 调用响应之前无法单击任何按钮。
但是,如果可能的话,我希望用户能够得到一些系统正在运行的指示,这样他就不会认为系统被卡住了。
某种简单的动画和使页面变灰可以达到目的,直到有响应。

此外,我想对 ajax 调用设置一个时间限制,这样如果 10 秒内没有响应,调用将返回并给出错误消息。

我有什么选择?

我在 WordPress 下工作,所以如果它有一些好的方法来处理这个问题,那也是一个选择。

最佳答案

这样就可以了

js

$('#overlay').show();

$.ajax({
   url: 'somepage.htm',
   timeout: 10000, /*milliseconds*/
   })
  .complete(function(){ $('#overlay').hide(); }) /*runs after success or error*/
  .success(function(data){ /*do whatever*/ })
  .error(function(){ /*timeout or general error*/ });

html

<div id="overlay"></div>

CSS

#overlay{
  display:none;
  position:fixed;
  top:0;
  left:0;
  right:0;
  bottom:0;
  background-color:#666;
  opacity:0.6;
  z-index:999;
}

演示地址:http://jsfiddle.net/gaby/X6sDS/1/

关于javascript - 在 ajax 调用发生时暂停用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6600909/

相关文章:

javascript - 连接两个动态创建的选择元素

javascript - vuex 操作返回 false 时出现奇怪的控制台错误

javascript - 在javascript中呈现像视频一样的图像链

javascript - 将以下代码从 for 循环转换为 Array#map

jquery - 使用 CSS 的滑动菜单?

php - 使用 AJAX、PHP 和 MySql 进行过滤

javascript - 为什么我无法显示 "person name :"?

ajax - Twitter-bootstrap 预输入重复

Ajax.BeginForm 忽略 MVC 5 中参数中定义的 Action 和 Controller

javascript - 如何将应用程序从浏览器重定向到 Safari?