首页 > 解决方案 > 为什么我的 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。据我所知,丢失的事件是随机的。

我阅读了有关浏览器缓存的信息,但我认为这不是问题,因为每个有效负载都有唯一的时间戳?然后我又没有对标头进行任何编码或设置,所以也许这就是问题所在?

标签: node.jshttpposteventsxmlhttprequest

解决方案


正如@mottek 在评论中提到和解释的那样,在解决问题之前添加一个var(或letconst) 。xhr

我没有意识到xhr=new XMLHTTPRequest()创建了一个全局变量。

我还post通过使用fetch

fetch('/record_event', {
    method: 'post',
    headers: {
        'Content-Type':'text/plain'
    }
    body: timeStamp.toString()
}

推荐阅读