【问题标题】:POST method from form returns null表单中的 POST 方法返回 null
【发布时间】:2021-07-11 08:41:36
【问题描述】:

我正在尝试使用 post 与 express 和 bodyparser 将数据从 ejs 文件中的表单插入 MYSQL。它一直返回null,所以似乎我的数据没有从表单解析到我的后端。 你能帮忙吗?

这是我的 server.js

app.use(express.json({ limit: '100mb' }));
app.use(express.urlencoded({ limit: '100mb', extended: false }));
dotenv.config();


// Set the default views directory to html folder
app.set('views', path.join(__dirname, 'html'));

// Set the folder for css & java scripts
app.use(express.static(path.join(__dirname,'css')));
app.use(express.static(path.join(__dirname, 'node_modules')));

// Set the view engine to ejs
app.set('view engine', 'ejs');

app.use('/', routes);

app.listen(3000, () => {
    console.log(`Server is running at ${process.env.SERVER_PORT}`);
});

我的 index.js

router.post('/save', (req, res) => {
const formData = { username : req.body.username, account : req.body.account, email : req.body.email, 
    address : req.body.address, start_date : req.body.start_date, picture : req.body.picture, 
    request : req.body.request };
const sqlPut = "INSERT INTO dbTable ?";
const query = dbconn.conn.query(sqlPut, formData, (err, results) => {
    if(err) throw err;
    res.redirect('/about')
})

})

这是我的带有表单的 ejs 文件。

<div class="container" >  
<form id="contact" action="/save" method="post">
  <h3>New scholar form</h3>
  <fieldset>
    <input placeholder="username" id="username" type="text" tabindex="1" required autofocus>
  </fieldset>
  <fieldset>
    <input placeholder="account" id="account" type="text" tabindex="2" required>
  </fieldset>
  <fieldset>
    <input placeholder="email" id="email" type="email" tabindex="3" required>
  </fieldset>
  <fieldset>
    <input placeholder="bnc_address" id="bnc_address" type="text" tabindex="4" required>
  </fieldset>
  <fieldset>
    Scholar start date <input placeholder="start_date" type="date" tabindex="4" required> 
  </fieldset>
  <fieldset>
    <input placeholder="picture" id="picture" type="text" tabindex="4" required>
  </fieldset>
  <fieldset>
    <textarea placeholder="Scholar request..." id="request" tabindex="5" required></textarea>
  </fieldset>
  <fieldset>
    <button name="submit" type="submit" id="contact-submit">Submit</button>
  </fieldset>
</form>

我可以从数据库中检索数据并发布它就好了。我只是还没有弄清楚这一点。 好久没发帖了,大家多多包涵

【问题讨论】:

    标签: javascript mysql node.js express ejs


    【解决方案1】:

    我没有使用它就导入了 body-parser。删除导入后,它开始工作。

    删除了这个,即使它没有使用,它在之后开始工作:

    const bodyParser = require("body-parser");
    

    【讨论】:

      【解决方案2】:

      你需要改变这一行:

      app.use(express.urlencoded({ limit: '100mb', extended: true }));
      

      将文本解析为 URL 编码数据(这是浏览器倾向于从设置为 POST 的常规表单发送表单数据的方式)并在 req.body 上公开结果对象(包含键和值)。

      【讨论】:

      • 抱歉我的回复晚了。它仍然不起作用。我的代码仍然尝试将 null 插入数据库。
      猜你喜欢
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多