1

なぜ次のことが起こっているのか、誰でも説明してもらえますか。まず、以下の私のコードを見てください。JSON 要求を介してデータを取得し、後で使用するために保存しようとしています。

        var entities;

        //@jsonGetEntities is an url build by asp.net MVC and this works
        $.getJSON("@jsonGetEntities", function(getdata) {
            entities = getdata;

            //I would expect that this is the first alert
            alert(entities + "first");
        });            

        //I would expect that this is the second alert
        alert(entities + "second");

ただし、私が最初に期待するアラートは 2 番目に来て、entities実際には満たされています。

最後のアラートentitiesでは満たされていません。

json が var に保存されない理由と、後で呼び出されるアラートが先に実行される理由を理解できないようです。また、可能な他の解決策を教えていただけますか?

4

2 に答える 2

3

それは非同期だgetJSON()からです

最初のアラートは、サーバーが戻ると非同期で実行される getJSON の成功コールバック内にあります。

ただし、2 番目のアラートgetJSON()は、( 経由で) AJAX 要求をトリガーした直後に実行されます。

于 2013-05-22T13:06:18.993 に答える