router.post('/postForm',(req,res) => { const query = req.body console.log(query) res.send(query) }) 结果为空 //2.post请求传递参数(form) function postForm(){ const xhr = new XMLHttpRequest() xhr.open("post","postForm") const infoE1 = document.querySelector("#info") const form = new FormData(infoE1) form.append("height",1.88) xhr.send(form) }
时间: 2023-07-16 18:15:59 浏览: 162
Node.js-使用ExpressMongoDB搭建多人博客
根据您提供的代码,可能出现问题的地方有以下几点:
1. 在使用 `FormData` 构造函数时,需要传入一个表单元素作为参数。但是,您的代码中使用了 `document.querySelector("#info")` 来获取表单元素,这样获取到的只是一个普通的 DOM 元素,并不是表单元素。应该使用 `document.querySelector("form")` 来获取表单元素。
2. 在发送请求时,需要将 `Content-Type` 设置为 `application/x-www-form-urlencoded` 或 `multipart/form-data`。默认情况下,`XMLHttpRequest` 对象会将 `Content-Type` 设置为 `application/json`。可以使用 `xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");` 来设置 `Content-Type`。
3. 如果您使用 Express 框架,需要使用 `body-parser` 模块来解析 POST 请求体中的数据。可以像下面这样使用:
```javascript
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
```
因此,建议您按照以下方式修改代码:
```javascript
// 1. 修改路由
router.post('/postForm', (req, res) => {
const query = req.body;
console.log(query);
res.send(query);
});
// 2. 修改发送请求的函数
function postForm() {
const xhr = new XMLHttpRequest();
xhr.open("post", "postForm");
const form = new FormData(document.querySelector("form"));
form.append("height", 1.88);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(form);
}
```
另外,如果您仍然无法得到正确的结果,可以在浏览器的开发者工具中查看请求和响应的详细信息,以便找出问题所在。
阅读全文