我在我的网络应用程序中使用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秒传递。在这段时间没有任何反应,这应该是我想要避免的。 有人有解决方案吗?
答案 0 :(得分:0)
这是一个很长的镜头,所以让我解释一下,我在9个月不活动后回到这里。但是这样的事情在去年就出现了问题,然后我就解决了这个问题。
出于某种原因,在使用web-kit浏览器时,必须使用setTimeout或serInterval来触发jQuery Mobile AJAX加载器。
例如:
setTimeout(function(){
$.mobile.loading('show',{ text:msg, textVisible:true, theme:'b', textonly:text_only});
}, 1);
一秒就足够了。另请查看我较早的 answer 或 this 。基本上我不想将此作为重复报告,因为我不知道今天这仍然是一个问题。请留下评论,告诉我这个解决方案是否有效。