javascript - 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, params, callback);
}
一切wrt请求和响应工作正常。请求成功,我得到了预期的响应。但问题是我的“xmlHttp.onreadystatechange”回调只触发了一次。即在控制台日志中我只能找到“1”。但是当我使用同步调用时,同样的情况也可以正常工作。我的页面正在更新我完成的消息。但是通过异步调用,页面将使用“请求进度条”进行更新,但是一旦请求完成,我的页面中就看不到任何进一步的变化。
使用异步调用时有什么问题吗?
谢谢 !!
解决方案
推荐阅读
- python - 如何更改 seaborn 线图中的 xaxis 标签
- context-free-grammar - 语言到上下文无关语法
- php - 如何提高 PHP 中 for 循环的速度?
- django - json.loads() 上的 Django Rest Framework 和 Angular Dev vs Prod 字符串和字节问题
- javascript - 在mongodb(monk)中用.find()获取最新的50个文档
- c# - C# WPF SQL Server 文件下载到 PC
- python - 为什么我不能对我用python写的这个基本的链表方法做一个基本的测试?
- database - 这样的数据库是否规范化了?
- tfs - Tfs 自动发布,在哪个步骤标记化评估
- bash - 我怎样才能让 jq 丢弃除系列中最大的数字之外的所有数字?