1

私は次の機能を持っています:

function loginStudent() {
    var advisorKEY = "<dtml-var expr="py_get_alias()">";
    var studentKEY = "<dtml-var SID>";  
    var URL = "py_logging_sessionOpen?AdvisorKEY=" + advisorKEY + "&StudentKEY=" + studentKEY;
    key = "";
    $j.get(URL, function(data) { 
        key = data;
    });
    alert(key);
}

これpy_loggin_sessionOpenは、私のサーバーで実行されている単なる python スクリプトです。
単一の文字列を返します。次のアクションを決定するには、そのスクリプトの応答が必要です。スクリプトは値を完全に返します。 inalert内にを入れることで、値を簡単に確認できます。 function(data)get

私の主な質問は、関数(データ)の範囲外で変更されるキー値を取得する方法ですか?

外部で定義したため、グローバル変数として機能すると想定しました。外に移動してloginStudent()も問題は解決しません。

何か案は?

4

2 に答える 2

6

$j.get()非同期呼び出しになります。つまり、起動し、残りの実行が続行されます。その呼び出しに依存するものはすべて、次のようにコールバックで実行する必要があります。

$j.get(URL, function(data) { 
    key = data;
    alert(key);
} );

他のすべてが良好であれば、期待する値が表示されます。

于 2013-02-12T15:31:43.210 に答える
0

コードの問題は、$j.get非同期で実行されることです。それがあなたがそれにコールバックを渡す理由です。

非同期コードを同期的に記述したい場合は、次の回答を読む必要があります:https ://stackoverflow.com/a/14809354/783743

編集:keyで宣言しないことで呼び出されるグローバル変数を作成したようですvar。したがって、コールバックに呼び出される限り、他の関数で表示されるはずです。

これらの他の機能を提供していただけませんか?

于 2013-02-12T15:33:27.777 に答える