0

この関数から値を取得するのに問題があります。理由はわかりませんが、空を返しています。私はfirebugでデバッグし、2回実行します。最初の実行は空を返し、2番目の実行は値を返します。

どうすればこれを修正できるか考えてみてください。

function validation() {
    if (val()); {
        alert("Error");
    } else {
        alert("Pass");
    }
}

function val() {
    var answer;
    dojo.xhrGet({
        url: "ValodS?option=12",
        handleAs: "text",
        load: function (response) {
            if (response == 'Pass') {
                answer = false;
            } else {
                answer = true;
            }
        }
    });
    return answer;
}
4

3 に答える 3

1

valが戻ると、answerは割り当てられません。httpリクエストを送信する非同期操作を呼び出しています。その後、制御フローが続行され、httpリクエストが最終的に終了すると、を割り当てるanswer、定義した無名関数が実行されます。

于 2012-10-09T20:45:10.310 に答える
1

問題は、応答が送信される前に応答を返すことです(AJAX要求は、呼び出し元のコードをブロックせずにバックラウンドで実行されます。

最も簡単な解決策は、呼び出し元にコールバック関数を関数に渡させることです。load次に、ハンドラー内でコールバック関数を呼び出すことができます(したがって、その方法でデータを渡します)。

于 2012-10-09T20:45:13.710 に答える
0

あなたは余分なものを持っています; あなたの後if

最初の行をから変更します

if (val());

if (val())
于 2012-10-09T20:44:11.063 に答える