我有一个发出AJAX调用的功能(通过jQuery)。在本complete节中,我有一个函数说:
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。
alert(textStatus)
undefined
可以将回调函数传递给我的callajax()方法吗?喜欢:
callajax()
callajax(function(){// success}, function(){// error}, function(){// complete});
complete是一个 回调 函数。它将由Ajax对象调用-异步!-操作完成时。您无法捕捉回调的结果,只有Ajax对象可以做到这一点。
您的callajax()函数-您没有显示该函数,但我认为它只是使Ajax调用- 无法返回该调用的结果(=响应头和正文),因为退出该callajax()函数时该调用尚未完成。
更新: 这 是 也很可能使同步AJAX调用。感谢@Andris指出这一点。在jQuery中,您需要将async选项设置为false:Docs here。但是,就我所知,即使是那些使用标准回调函数的函数,因此您所需的return false或方法true仍然可能不起作用。
async
false
true