节点 js 服务器 post 请求忽略从 axios 发送"[]"方括号我该怎么办?



我有一个向nodejs服务器发送源代码的表单。问题是当我在服务器上打印请求时,[之后的每个字符都被忽略。

例如表单源代码包含:

在服务器上CCD_ 2被CCD_。

客户端请求:

axios.post('http://localhost:3001/submit', encodeURIComponent(data))
.then(response =>  {
console.log(response);
})
.catch(error => {
console.log(error);
})

服务器上的请求

module.exports.submit = (req, res) => {

let x = Object.keys(req.body)[0];
let decodedData = decodeURIComponent(x);
let code = decodedData;
console.log(code); // code is fib      
res.send('ok');

}

如果您想将数组值作为POST请求发送,您应该使用对象POST数据。

// server.js
const express = require("express");
const app = express();
const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(express.static("./"));
app.post("/submit", (req, res) => { // POST is here.    
console.log("your request body: ",req.body);
console.log("your fib: ", req.body.fib);
// lets send back to client what we received
res.json(req.body.fib);
});
app.listen(3000, () => {
console.log(`Server running on port ${3000}`);
});

你的客户端可以是这样的:

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
data = {
fib: [null, 0, 1, 2, null, 5]
};
axios.post('http://localhost:3000/submit', (data))
.then(response =>  {
console.log(  "server received fib data: " , response.data);
})
.catch(error => {
console.log(error);
})
</script>

相关内容

最新更新