0

私はかなり単純に見える何かをしようとしています。基本的に、Ajax 開始イベントと Ajax 終了イベントをチェックする Ajax イベント リスナーがあり、開始または終了が検出されたときに実行され$.mobile.loading('show')、Ajax イベントが終了したときに実行されます$.mobile.loading('hide')。ただし、読み込みアイコンとテキストは表示されません。

Ajax イベントの開始リスナーとイベント終了リスナーに何か問題があると考えて、Ajax の開始イベントと終了イベントを正しく取得していなかったので、正常に$.mobile.loading('show')機能する標準アラートに置き換えました。これが私のコードです:

$("#page1").ajaxStart(function() { $.mobile.loading('show'); });

$("#page1").ajaxEnd(function() { $.mobile.loading('hide'); });

私は自分が何か間違ったことをしていることを知っていますが、何をしているのかわかりません。何か案が?

ああ、場合によっては、この JQM アプリケーションは cordova (1.7.0) と jquery 1.8.1 と jquery mobile 1.1.1 で実行されています。

ライブラリはこの順序でロードされ、イベント リスナーはデバイスの準備完了イベントの後にロードされます。

それで:

function onBodyLoad() { document.addEventListener("deviceready", onDeviceReady, false); }

function onDeviceReady() {
    / load the ajax start and end listeners code displayed above /
}

編集: これが私のドキュメントヘッドの外観です:

<script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script>
<script src="js/jquery-1.8.1.min.js"></script>
<script src="js/jquery.mobile-1.1.1.js"></script>
<script type="text/javascript">

function onBodyLoad()
{
    document.addEventListener("deviceready", onDeviceReady, false);
}

function onDeviceReady()
{
    $("#page1").ajaxStart(function() {
        $.mobile.loading('show');
    });

    $("#page1").ajaxStop(function() {
        $.mobile.loading('hide');
    });
}

ページ 1 には、JQM によって拡張されたいくつかのフォーム フィールドがあり、ユーザーが送信ボタンをクリックすると、ユーザーがネットワークに接続されているかどうかを確認する機能が実行され、接続されている場合は Ajax を介してそのデータが送信されます。この$.mobile.loadingメソッドは、Ajax が処理を行っているときに実行する必要がありますが、そうではありません。

4

1 に答える 1

0

ajaxを呼び出すまでにjquerymobileが初期化されますか?これがあなたが私のために試し、働いたものです。(変数の名前空間を使用してコードをさらにクリーンアップできますが、これでアイデアが得られるはずです)

var deviceready = false, pageinitialized = false;
function onBodyLoad() { 
   document.addEventListener("deviceready", onDeviceReady, false); 
   $(document).bind("pageinit", function(){
     pageinitialized =true;
     myloading();
   });
}

function onDeviceReady() {
 / load the ajax start and end listeners code displayed above /
  myloading();
}

var myLoading = function(){
 if ( !deviceready || !pageinitialized ) {
  return
 }
 //Your ajax call here

}
于 2012-09-06T15:54:22.550 に答える