Javascript AJAX函数返回undefined而不是true / false

时间:2010-05-11 19:51:38

标签: javascript jquery ajax callback return-value

我有一个发出AJAX调用的函数(通过jQuery)。在complete部分,我有一个功能说:

complete: function(XMLHttpRequest, textStatus)
{
    if(textStatus == "success")
    {
        return(true);
    }
    else
    {
        return(false);
    }
}

但是,如果我这样称呼它:

if(callajax())
{
    //  Do something
}
else
{
    // Something else
}

第一个从未被调用。

如果我在alert(textStatus)函数中放置complete,我会得到,但在该函数返回undefined之前不会。

是否可以将回调函数传递给我的callajax()方法?像:

callajax(function(){// success}, function(){// error}, function(){// complete});

1 个答案:

答案 0 :(得分:7)

complete是一个回调函数。它将由Ajax对象调用 - 异步! - 操作完成时。你无法捕获回调的结果,只有Ajax对象可以做到这一点。

您的callajax()函数 - 您没有显示该函数但我认为它只是使Ajax调用 - 无法返回调用的结果(=响应标题和正文),因为调用不会退出callajax()函数时已完成。

更新: 也可以进行同步AJAX调用。感谢@Andris指出这一点。在jQuery中,您需要将async选项设置为false:文档here。但是,就我所见,即使是那些使用标准回调函数的人也是如此,因此返回falsetrue所需的方法可能仍然不起作用。