我想用這個 HTML 代碼發出一個 post 請求:
<!DOCTYPE html>
<form action="/post-test" method="post">
<input type="text" id="name" />
<input type="submit" value="submit">
</form>
然后在后端控制臺上寫入請求。所以這是我的后端代碼:
const path = require('path');
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(express.static(path.join(__dirname, 'views')));
app.use(bodyParser.json());
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, "/views/html/test.html"));
});
app.post('/post-test', async function(req, res) {
const data = req.body;
console.log(data.name);
});
當我在輸入中輸入內容并按提交時,控制臺顯示未定義。問題出在哪里,您有解決方案嗎?
uj5u.com熱心網友回復:
您有多個問題。
路徑中的錯字
action="/post-test"并且app.post('/createGazme'需要匹配
表單控制元件發布名稱=值資料
您的輸入沒有,name所以它不會發布任何資料。給一個。
<input type="text" name="name">
該id屬性用于客戶端目的,例如作為鏈接目標或<label>使用for屬性關聯。
您的正文決議器用于錯誤的資料型別
默認情況下,表單以application/x-www-form-urlencoded. 您可以使用該enctype屬性將其更改為multipart/form-data.
你的身體決議器——app.use(bodyParser.json());只能處理application/json身體。您需要一個支持您實際使用的資料格式的正文決議器。
body-parser無論如何,該模塊已經過時了。Express 有一個內置的。
express.json() 將執行您當前模塊所做的作業(但仍然無法正常作業)。
express.urlencoded() 將支持您的表格。
app.use(bodyParser.urlencoded());
uj5u.com熱心網友回復:
在表單中添加 name 引數并放置一個值,即插入到請求正文中
<form action="post-test" method="post">
<input type="text" id="name" name="name"/>
<input type="submit" value="submit">
</form>
在后端您訪問
req.body.name
uj5u.com熱心網友回復:
將表單操作更改為路由名稱
<form action="/createGazme" method="post">
</form>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/374082.html
