如何解决xmlhttp.onreadystatechange在异步调用中仅触发一次
这是我的js代码
function makeAsynchronousPostHttpCall(url,params,callback) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("POST",url,true); // false for synchronous request
xmlHttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlHttp.send(params);
xmlHttp.onreadystatechange = callback(xmlHttp);
return xmlHttp.responseText;
}
function fooBar() {
var url = foo;
var config = bar;
var params = "config=" + config;
var callback = (xmlHttp) => {
console.log(xmlHttp.readyState);
if(xmlHttp.readyState == 1){
document.getElementById('progress').innerHTML = 'Request in Progress For '+ config;
document.getElementById('completedMessage').innerHTML = "";
}
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
document.getElementById('progress').innerHTML = 'Request Completed For '+ config;
document.getElementById('completedMessage').innerHTML = xmlHttp.responseText;
}
}
makeAsynchronousPostHttpCall(url,callback);
}
所有请求和响应均正常。请求成功,我得到了预期的响应。但是问题是我的“ xmlHttp.onreadystatechange”回调仅被触发了一次。即在控制台日志中,我只能找到“ 1”。但是当我使用同步调用时,同样的情况也可以正常工作。我的页面正在用完成的消息更新。但是,通过异步调用,页面将更新为“请求中的进度条”,但是一旦请求完成,我的页面就不会再有任何更改。
使用异步调用时有什么收获吗?
谢谢!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。