Javascript 如何将ajaxComplete应用于XMLHttpRequest
我正在使用XMLHttpRequest()异步请求加载json文件。我需要等待请求完成,然后再继续进行其他操作 我看到ajaxComplete()应该做到这一点,但我无法将其应用到实际代码中并使其正常工作 在这里,我将设置通过异步请求调用json的函数Javascript 如何将ajaxComplete应用于XMLHttpRequest,javascript,json,ajax,asynchronous,Javascript,Json,Ajax,Asynchronous,我正在使用XMLHttpRequest()异步请求加载json文件。我需要等待请求完成,然后再继续进行其他操作 我看到ajaxComplete()应该做到这一点,但我无法将其应用到实际代码中并使其正常工作 在这里,我将设置通过异步请求调用json的函数 function ajaxCall(){ xmlhttp.onreadystatechange = function(){ if(xmlhttp.readyState==4 && xmlhttp.sta
function ajaxCall(){
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
arrayImages = JSON.parse(xmlhttp.responseText);
output(arrayImages);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
我在这里调用这个函数
ajaxCall();
现在我希望它完成
do other things
有什么帮助吗
谢谢 您有两个选择
A
然后你就可以在事情完成后做一些事情
ajaxCall().then(function(){
// Do stuff after
});
或您可以使用回调
function ajaxCall(callback){
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
arrayImages = JSON.parse(xmlhttp.responseText);
output(arrayImages);
callback();
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
然后像这样做
ajaxCall(function(){
// do stuff after
});
ajaxComplete
是jQuery库的一部分。它只绑定到jQuery ajax请求。虽然它们通常包装XMLHttpRequest,但当您手动使用XMLHttpRequest时,它们无法触及XMLHttpRequest
要在响应返回后运行一些代码,需要等待合适的事件。您已经在这里这样做了:
将接收到响应后要运行的代码放在if语句中
如果要使
ajaxCall
可重用,则将函数作为参数传递给它,然后在If
语句中调用该函数。makeajaxCall
接受“做其他事情”的回调。有关具体示例,请参见“我看到ajaxComplete()应该做到这一点”,这似乎是一个jQuery问题。由于您没有使用jQuery,因此它不适用于您。感谢您的帮助,我尝试了所有这些方法,尤其是第二种方法,但它不想进入函数。所以它运行ajaxCall(),但不运行内部代码。。。ajaxCall(函数(){alert('Hello!');})@rolfo85-您是否向函数中添加了回调参数?您是否在函数中调用了回调参数?有两个地方需要添加。发布您的更新代码。
ajaxCall(function(){
// do stuff after
});
if(xmlhttp.readyState==4 && xmlhttp.status==200){