有这样一个业务,每当客户端发起一个请求,判断是否超过2秒,如果超过,则出现“请稍候”,如果没超过,就不出现“请稍候”。请各位大牛给点思路
var timeout; $(document).ajaxStart(function () { timeout = setTimeout(顯示請稍候, 2000) }).ajaxComplete(function () { if (timeout) { clearTimeout(tineout); } 清除請稍候 });
大致上這樣
谢谢你的代码,现在有个问题:请求超过5秒的话,“请稍候”会刷新,体验不好,这样应该怎么办呢?
@李子深:
請稍候會刷新?setTimeout只會執行一次怎麼會刷新
@RosonJ: 不好意思,你的代码是对的
发起请求的时候setInterval 2秒调用显示代码, 请求完成后clearInterval,如果到时间没clearInterval,自然就调用显示代码。
你好,我对js不太熟,你可不可以给个代码
@李子深:
HTML
<div id="loading" style="display: none;">请稍后...</div>
JS
function somerequest(parameters) { //生成定时器,2秒后执行 var sh = setInterval(showLoading, 2000); $.ajax({ type: 'post', url: 'url', data: {}, success: function (data) { //请求完成清除定时器 clearInterval(sh); hideLoading(); }, error: function () { //请求出错清除定时器 clearInterval(sh); hideLoading(); } }); } //显示请稍后 function showLoading() { $("#loading").fadeIn(); } //隐藏请稍后 function hideLoading() { $("#loading").fadeOut(); }
@大头说: 谢谢你的代码,现在有个问题:请求超过5秒的话,“请稍候”会刷新,体验不好,这样应该怎么办呢?
@李子深: 你好,已经解决,setInterval要换成setTimeout
一般很难或者不推荐判断是否2秒,话题太长就不展开讨论了。
建议的做法是,在有超过1或者2秒可能行的操作按钮,显示正在....请稍候,
执行完毕关闭“正在...”窗口。
因为我要在原来框架上修改,所以没办法使用你这种方式