功能不返回值

时间:2012-10-09 20:42:22

标签: javascript dojo

我无法从此功能中获取值,我不确定原因但是返回空白。我用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;
}

3 个答案:

答案 0 :(得分:1)

当val返回时,未分配answer。您正在调用发送http请求的异步操作。然后控制流程继续,当http请求最终完成时,将执行您定义的分配answer的匿名函数。

答案 1 :(得分:1)

问题是你在发送之前就回复了答案(AJAX请求在后台运行而不会阻塞调用代码。

最简单的解决方案是让调用者将回调函数传递给您的函数。然后,您可以在load处理程序内调用回调函数(从而以这种方式传递数据)。

答案 2 :(得分:0)

你还有一个额外的;在if

之后

更改第一行
if (val());

if (val())