我有一个发出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});
答案 0 :(得分:7)
complete
是一个回调函数。它将由Ajax对象调用 - 异步! - 操作完成时。你无法捕获回调的结果,只有Ajax对象可以做到这一点。
您的callajax()
函数 - 您没有显示该函数但我认为它只是使Ajax调用 - 无法返回调用的结果(=响应标题和正文),因为调用不会退出callajax()
函数时已完成。
更新: 也可以进行同步AJAX调用。感谢@Andris指出这一点。在jQuery中,您需要将async
选项设置为false
:文档here。但是,就我所见,即使是那些使用标准回调函数的人也是如此,因此返回false
或true
所需的方法可能仍然不起作用。