2

$.mobile.showPageLoadingMsg()ユーザーがログインボタンを押した後、jquerymobileを使用しようとしています。この操作の後、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$.mobile.hidePageLoadingMsg()バージョン1.2 で非推奨になりました。代わりに$.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 に答える