jQuery Mobile showPageLoadingMsg()/ hidePageLoadingMsg()方法仅适用于firefox浏览器

时间:2013-01-28 06:03:10

标签: javascript jquery jquery-mobile

我试图在用户点击后使用jquery mobile $.mobile.showPageLoadingMsg() 登录按钮。在此操作之后,我正在对webservice进行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秒。由于给出超时不是一个修复。 请帮忙。

1 个答案:

答案 0 :(得分:9)

自jQM 1.2版起,首先$.mobile.showPageLoadingMsg()$.mobile.hidePageLoadingMsg()deprecated。 请改用$.mobile.loading('show')$.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模拟这里冗长的工作