2

$.mobile.showPageLoadingMsg()用户点击登录按钮后,我正在尝试使用 jquery mobile 。在此操作之后,我正在对 web 服务进行 ajax 调用,在得到响应后,我隐藏了加载消息。问题是加载器仅显示在 firefox 浏览器中,而不显示在其他浏览器(chrome、safari、android)中。

例子:

$.mobile.showPageLoadingMsg();
var response = $.ajax(
 {
   type: "POST",
   url: "service.php",
   data: "...",
   async: false,
   dataType: "json",
   cache: false
   });
   response.success(function (data)
    {
    res_content = data;
    });
    response.error(function (jqXHR, textStatus, errorThrown)
    {
  }
 $.mobile.hidePageLoadingMsg();

我还发现如果我给 hidePageLoadingMsg 超时,加载程序就会出现。

setTimeout(function(){$.mobile.hidePageLoadingMsg()},5000);

加载程序需要更多时间才能显示,即它在 ajax 调用后显示并显示 5 秒。因为超时不是解决方法。请帮忙。

4

1 回答 1

9

首先,$.mobile.showPageLoadingMsg()从jQM 1.2 版开始$.mobile.hidePageLoadingMsg()推荐使用。使用$.mobile.loading('show')and$.mobile.loading('hide')代替。

话虽如此,您可以尝试类似的事情

$("#btn1").click(function(){
    $.mobile.loading('show', {theme:"e", text:"Please wait...", textonly:true, textVisible: true});

    //Do your ajax call and processing here
    setTimeout(function(){
        $.ajax({
            ...
            success: function (data){
                ...
                $.mobile.loading('hide');
            }
        });
    }, 50);
});

请参阅jsFiddle在此处模拟冗长的工作

于 2013-01-28T06:48:39.843 回答