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

Jos*_*h K 2 javascript ajax jquery callback return-value

我有一个发出AJAX调用的函数(通过jQuery).在本complete节中,我有一个函数说:

complete: function(XMLHttpRequest, textStatus)
{
    if(textStatus == "success")
    {
        return(true);
    }
    else
    {
        return(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

if(callajax())
{
    //  Do something
}
else
{
    // Something else
}
Run Code Online (Sandbox Code Playgroud)

第一个从未被调用过.

如果我alert(textStatus)complete函数中放入一个我得到的,但在该函数返回之前不会undefined.

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

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

Pek*_*ica 7

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

你的callajax()函数 - 你没有显示该函数,但我认为它只是使Ajax调用 - 无法返回调用的结果(=响应头和正文),因为当你退出callajax()函数时调用还没有完成.

更新:也很可能使同步AJAX调用.感谢@Andris指出这一点.在jQuery中,您需要将async选项设置为false:Docs here.但是,就我所见,即使是那些使用标准回调函数,所以你想要的返回方法false或者true仍然无法工作.