node.js - 为什么我的 XMLHttpRequest POST 并不总是发送到服务器?
问题描述
我正在制作一个 XMLHttpRequest,在浏览器中的某些用户事件上向 nodejs 服务器发布一个字符串,但并非每个事件似乎都会发送到服务器。
这基本上是我为每个浏览器事件调用的函数:
function xhr_event(timeStamp){
xhr=new XMLHttpRequest()
xhr.open("POST",'/record_event');
console.log(timeStamp.toString())
xhr.send(timeStamp.toString())
}
在哪里timeStamp=event.timeStamp
在客户端,每个事件都记录到控制台。在服务器端,并非所有事件都显示为 POST。据我所知,丢失的事件是随机的。
我阅读了有关浏览器缓存的信息,但我认为这不是问题,因为每个有效负载都有唯一的时间戳?然后我又没有对标头进行任何编码或设置,所以也许这就是问题所在?
解决方案
正如@mottek 在评论中提到和解释的那样,在解决问题之前添加一个var
(或let
或const
) 。xhr
我没有意识到xhr=new XMLHTTPRequest()
创建了一个全局变量。
我还post
通过使用fetch
:
fetch('/record_event', {
method: 'post',
headers: {
'Content-Type':'text/plain'
}
body: timeStamp.toString()
}
推荐阅读
- http - 基于 HTTP 请求源的路由
- keras - 如何禁用预训练自编码器潜在空间中的神经元?
- boost - 如何使用 boost::property_tree::write_xml 设置目标 XML 文档类型?
- javascript - 如何在 ChartJS Pie 中添加 url?
- c++ - Float* 数据成员没有给出预期的输出
- visual-studio-code - git diff 如何在 vscode 上工作(特别是工作更改)
- c - 如何像在 C++ 中一样比较 C 中的命令行参数
- java - SpringMVC单元测试-控制器中未调用服务方法
- node.js - 我的 fetch POST 返回代码为 200,但我的数据未发布在我的 bdd 上
- deployment - 使用 GIT 集成进行发布时,从 Azure 数据工厂中删除标记