无法在 ajax 调用中显示加载消息



我在我的web应用程序中使用jQuery移动。我使用这两个函数向用户显示和隐藏一个纺车和一条消息:

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秒。在这段时间里什么也没发生,这应该是我想避免的。有人有解决办法吗?

这是一个很渺茫的机会,所以让我解释一件事,我在9个月不活动后回到了这里。但是像这样的事情是去年的问题,这次我解决了。

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

例如:

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

一秒钟就够了。也看看我以前的答案,或者这个。基本上,我不想将此报告为重复,因为我不知道今天是否仍然存在这个问题。请留言告诉我这个解决方案是否有效。

最新更新