0

我无法从此函数中获取值,我不知道为什么但返回为空。我用 firebug 调试它,它运行了两次,第一次返回空,然后第二次返回值。

知道如何纠正这个问题。

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 请求最终完成时,您定义的匿名函数 assigns 将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 回答