我正在从数据库中检索数据以将其显示在标签中
let xmlhttp = createXMLHttp();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("work_cost").innerHTML = this.responseText;
}
};
xmlhttp.open("GET", "../php/functions.php?type=" + work_type , true);
xmlhttp.send();
console.log(document.getElementById("work_cost").innerHTML);
问题是,即使标签“ work_cost”发生了完美变化,console.log仍会显示以前的数据。如何获得我看到的真实标签值?
例如:1.我从服务器得到“ 2”。2.在我的标签中放置“ 2”。3. console.log(label.value)显示“未定义”。4.下拉菜单更改。5.我再次进入服务器,现在获得“ 3”。6.在标签中放置“ 3”。7.尝试console.log(label.value)。我希望看到“ 3”,因为那是我在网页中看到的内容,但控制台显示“ 2”
因此,似乎控制台只向前看了一步。
1个
console.log在定义HTTP请求之后,但在从服务器返回响应之前,将立即执行该语句。
请记住,服务器响应需要时间。
您可以将其视为以下说明:
创建一个HTTP请求对象 对于此请求,当我们稍后收到响应时,运行以下代码: 将按钮标签设置为响应的内容 将请求发送到服务器 记录标签的当前内容 请注意,4不等待响应返回。发送响应是非阻塞的。响应将在一段时间后处理。
有时,当您在本地进行开发时,它有助于在devtools中限制网络,因此您可以夸大请求和响应之间的延迟。在Chrome中,您可以通过打开开发人员工具并选择“网络”标签,然后找到此下拉列表来做到这一点:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。