首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sendBeacon JSON数据未读取(服务器端) Nodejs和JS

sendBeacon JSON数据未读取(服务器端) Nodejs和JS
EN

Stack Overflow用户
提问于 2021-01-16 05:32:23
回答 1查看 1.1K关注 0票数 4

我试图发送一个关于可见性变化的帖子请求(如docs中所描述的),并且取得了有限的成功。我成功地提出了sendBeacon请求,但似乎无法读取Node.js Express服务器上的对象。这是我的发送信标js代码:

代码语言:javascript
复制
navigator.sendBeacon("/delete-room", JSON.stringify({roomID: 'test'}))

然后,当我通过快递处理它时:

代码语言:javascript
复制
app.post('/delete-room', (req, res)=>{
    console.log('Recieved ' + req.body)
    res.status(200).end()
})

我得到了这个日志:Recieved [object Object]。我无法读取req.body.roomID,即使在解析完主体之后(它返回错误不能解析对象对象)。我还尝试用一种形式对其进行编码:

代码语言:javascript
复制
var formData = new FormData()
formData.append('roomID', 'test')
            
navigator.sendBeacon("/delete-room", data);

它在服务器上返回此日志:Recieved {}

为什么我不能收到这个请求?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-16 06:43:40

用你的代码

代码语言:javascript
复制
var formData = new FormData()
formData.append('roomID', 'test')       
navigator.sendBeacon("/delete-room", data);

sendBeacon()函数通过HTTP请求以原始格式发送数据。

安装本体解析器表示中间件(npm install body-parser --save),然后:

代码语言:javascript
复制
// index.js
const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.raw());

app.post('/delete-room', (req, res)=>{
    console.log('Received ' + req.body)
    res.status(200).end()
})

app.listen(8080, () => console.log(`Started server at http://localhost:8080!`));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65746784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档