我有一个向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>