开发者社区> 问答> 正文

到服务器的HTTP请求不会更新标签[重复]

我正在从数据库中检索数据以将其显示在标签中


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”

因此,似乎控制台只向前看了一步。

展开
收起
社区秘书 2019-11-27 16:24:16 904 0
1 条回答
写回答
取消 提交回答
  • 1个

    console.log在定义HTTP请求之后,但在从服务器返回响应之前,将立即执行该语句。

    请记住,服务器响应需要时间。

    您可以将其视为以下说明:

    创建一个HTTP请求对象 对于此请求,当我们稍后收到响应时,运行以下代码: 将按钮标签设置为响应的内容 将请求发送到服务器 记录标签的当前内容 请注意,4不等待响应返回。发送响应是非阻塞的。响应将在一段时间后处理。

    有时,当您在本地进行开发时,它有助于在devtools中限制网络,因此您可以夸大请求和响应之间的延迟。在Chrome中,您可以通过打开开发人员工具并选择“网络”标签,然后找到此下拉列表来做到这一点:

    2019-11-27 16:24:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
ECS全知道(上) 实例+计费 立即下载
阿里巴巴HTTP 2.0实践及无线通信协议的演进之路 立即下载
CDN助力企业网站进入HTTPS时代 立即下载