1

PhoneGap、JQuery を使用してアプリに取り組んでいます

私は2つの標準のJavaScript関数を持っています。

LoadLanguage()Ajax 呼び出しを行って言語ファイルを取得し、Javascript オブジェクトをセットアップします。

SetLanguage() は以前のオブジェクト (LoadLanguage() で設定) を使用し、正しい言語でいくつかの変数を設定します。

したがって、私のjsファイルには次のコードがあります:

function LoadLanguage()
{
    ....make ajax call and set up an object
}

function SetLanguage()
{
    ....set language based of previous LoadLanguage()
}

$( '#startpage' ).live( 'pagebeforecreate',function(event)
{
    LoadLanguage();
    ....
}

$( '#startpage' ).live( 'pagebeforeshow',function(event)
{
    SetLanguage();
    ....
}

問題は、処理が完了SetLanguage()する前に発火するLoadLanguage()ことです。SetLanguage()内で実行されているこの問題を解決できましたLoadLanguage ajax.completeSetLanguage()しかし、コードの他の部分を呼び出す必要があるため、これは良くありません。

では、どうすればこれを良い方法で解決できますか?

4

5 に答える 5

2

You need to call the SetLanguage() function once the ajax request is completed and response is received. if you are using jquery then in LoadLanguage function where you are making ajax request

success: function(response)
{
    SetLanguage();
}
于 2012-09-04T12:48:32.010 に答える
1

ajax 呼び出しの async プロパティを false に設定できます。これは役に立つかもしれません: jQuery で非同期ではなく同期の Ajax 要求を実行するにはどうすればよいですか?

于 2012-09-04T12:48:26.830 に答える
1

あなたが提案している方法は私にはうまくいくようです。あなたの質問 - より正確には、あなたの関心は言語にとらわれないようです。

SetLanugage私が理解しているように、スクリプトの他の部分から関数を呼び出すこと、および関数の後に問題があると思われLoadLanguageます。ここにはまったく問題はありません。SetLanguageスクリプトの他の部分から安全に呼び出すことができる場合は、言語をロードした後、同じように動作するはずです。

于 2012-09-04T12:49:39.283 に答える
1

言語がロードされたときにのみ true になる関数呼び出しの外部にグローバル変数を設定することもできます。次に、SetLanguage 内でこれをテストします。

于 2012-09-04T12:50:07.593 に答える
1

ajax呼び出しをロックダウンしたい場合は、これを使用してください

if($.active){ 
  //there's an ajax function running
}else{ 
  //there's no ajax function running
} 
于 2012-09-04T12:50:27.620 に答える