节点 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>