1

私はそれを使ってphpファイルから値を取得したい関数を持っています:

var phrases = null;
function setPhrases(lang) {
    $.getJSON(locationHostname()+'json?json=lang&lang='+lang,
            function(json) {
        phrases = json;
        alert( 1 + ' ' + phrases);//phrases = [object Object]
    });
    alert( 2 + ' ' + phrases);//phrases = null
}
setPhrases('en');
alert(3+' '+phrases);//phrases = null

正しく設定する方法、そのアラート(3+'' +フレーズ); nullの代わりにオブジェクトを取得しますか?たとえば、getJSOnから値を返す関数を使用したいと思います。

ありがとうございました

4

4 に答える 4

2

$.getJSONは非同期であるため、未定義になりますalerts。ajax呼び出しがまだ実行されている間に実行されます。

json成功イベントで関数を呼び出し、引数としてasを渡すことができます。

function setPhrases(lang) {
    $.getJSON(locationHostname()+'json?json=lang&lang='+lang,
        function(json) {
            continueProcessing(json)
        }
    );
}

function continueProcessing(obj) {
  ...
}
于 2012-05-24T16:30:08.963 に答える
0

できません。 .getJSON非同期で実行され、非常に高速でない限り、alert(2)alert(3)は完了する前に実行されます。成功関数の一部としてalert(2)とを使用するか、を使用する必要があります。alert(3)Deferred

編集:それは電子的であるため、おそらく非常に高速であり、それでも十分ではないと思います!

于 2012-05-24T16:31:01.387 に答える
0

の非同期動作のためphrases、3番目に入ることができないと思います。alert()$.getJSON()

于 2012-05-24T16:31:09.437 に答える
0

コールバックメソッドを使用する必要があります。getJSONメソッドの非同期であるという問題。

例:

function setPhrases(lang, callback) {
    $.getJSON(locationHostname()+'json?json=lang&lang='+lang,
            function(json) {

        callback(json);
    });
}

   setPhrases('en',function(result) {

    alert(result);

});
于 2012-05-24T16:33:36.297 に答える