节点 js 服务器 post 请求忽略从 axios 发送的方括号“[]” 我该怎么办?
node js server post request ignores square brackets "[]" sent from axios what should I do?
我有一个表单可以将源代码发送到 nodejs 服务器。问题是当我在服务器上打印请求时 [
之后的每个字符都被忽略了。
例如表单源代码包含:
fib[0] = fib[1] = 1
在服务器上被替换为 fib
。
客户端请求:
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>
我有一个表单可以将源代码发送到 nodejs 服务器。问题是当我在服务器上打印请求时 [
之后的每个字符都被忽略了。
例如表单源代码包含:
fib[0] = fib[1] = 1
在服务器上被替换为 fib
。
客户端请求:
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>