小编典典

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

ajax

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

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

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

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

第一个永远不会被调用。

如果将an alert(textStatus)放入complete函数中,则为true,但在该函数返回之前不会为true undefined

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

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


阅读 222

收藏
2020-07-26

共1个答案

小编典典

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

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

更新:
也很可能使同步AJAX调用。感谢@Andris指出这一点。在jQuery中,您需要将async选项设置为false:Docs
here。但是,就我所知,即使是那些使用标准回调函数的函数,因此您所需的return
false或方法true仍然可能不起作用。

2020-07-26