【问题标题】:Can't get a loading message appear on ajax calls无法在 ajax 调用上显示加载消息
【发布时间】:2014-07-12 18:32:42
【问题描述】:

我在我的网络应用程序中使用 jQuery mobile。我使用这两个函数来显示和隐藏旋转的轮子和给用户的消息:

function showScreenMsg(msg,text_only) {
  $.mobile.loading('show',{ text:msg, textVisible:true, theme:'b', textonly:text_only});
}

function hideScreenMsg(){
  $.mobile.loading('hide');
}

//AJAX CALL
function show_dtl(element,id){
showScreenMsg('loading',false);

var details;
$.ajax({
        async:false,
        url:'./shyne/ajax/show_dtl.php',
        data: {user_dtl_id:id},
}).done(function(data)
        {   
            if (data){
                data = $.parseJSON(data);
                details = data;
                details = formatDetails(details);
                hideScreenMsg();
            }   
        }       
    );
if(details){return details;}
}

在 Ajax 调用之前,我使用适当的参数调用 showScreenMsg,当 Ajax 成功时,我调用 hideScreenMsg。

例如,我在人员列表中执行此操作,通过单击列表元素,您可以通过 ajax 获取人员详细信息。 我的问题是,可能由于 JQM(和设备)速度缓慢,加载消息没有出现,我的意思是,也许我在设备显示消息之前得到了 ajax 答案。然而,从用户点击到显示信息需要 3-5 秒。在此期间什么都没有发生,这应该是我想要避免的事情。 有人有解决办法吗?

【问题讨论】:

  • 你能把ajax调用的代码也贴出来吗?

标签: jquery ajax jquery-mobile web-applications jquery-mobile-ajax


【解决方案1】:

这是一个长镜头,所以让我解释一件事,我在闲置 9 个月后回到这里。但类似的问题是去年的一个问题,后来我解决了。

由于某些原因,在使用 web-kit 浏览器时,您必须使用 setTimeout 或 serInterval 来触发 jQuery Mobile AJAX 加载器。

例如:

setTimeout(function(){
    $.mobile.loading('show',{ text:msg, textVisible:true, theme:'b', textonly:text_only});
}, 1);

一秒钟就够了。也看看我的旧 answerthis 之一。基本上我不想将此作为重复报告,因为我不知道今天这是否仍然是一个问题。请留下评论告诉我此解决方案是否有效。

【讨论】:

  • 我尝试了你的提示,Gajotres。发生的情况是我在执行 setTimeout(function(){...}) 之前收到了来自服务器的答复。我认为问题在于 jQM 太慢了。有没有办法有效地让它运行得更快?即使打开一个带有简单 html 的简单可折叠元素也需要 2-3 秒(没有 Ajax 或 javascript 花式脚本)。
猜你喜欢
  • 2011-11-08
  • 2014-10-30
  • 1970-01-01
  • 2012-12-22
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
相关资源
最近更新 更多