【发布时间】:2020-08-20 20:08:41
【问题描述】:
我正在服务器端使用 vue-cli 和 nodejs 进行 CRUD。所以我有一个这样的表格
<template>
<div id="formRoot">
<div class="form" >
<form @submit.prevent="sendToTable" action="/create" method="post">
Name
<input type="text" v-model="row.name" name="name" />
Price
<input type="number" name="price" v-model="row.price" />
Description
<textarea v-model="row.description" rows="3" name="desc"/>
<input type="submit" id="button" value="SAVE" />
</form>
</div>
<form class="" action="create" method="post">
<input type="text" name="input">
<input type="submit" value="send">
</form>
</div>
</template>
<script>
export default{
data(){
return{
row: {
name: '',
price: '',
description: ''
}
}
},
methods: {
sendToTable() {
console.log(this.row);
this.$parent.addToTable(this.row);
}
}
}
</script>
@submit.prevent 是为了避免页面刷新,当然我有一个名为 sendToTable 的方法。
在节点中我有这个:
const path = require('path');
const morgan = require('morgan');
const app = express();
//middlewares
app.use(express.urlencoded({extended: false}));
app.use(express.static(path.resolve(__dirname, '../dist')));
app.use(morgan());
app.post('/create', (req, res) => {
console.log(req.body);
});
const port = 3000;
app.listen(port, () => {
console.log('server listening on port ' + port);
});
问题是服务器无法获取发布请求,我认为是因为@prevent.default 属性。
我尝试使用邮递员发送帖子请求并且它有效,所以我确定问题出在前端。
我该怎么办?那些可以向服务器发送数据的单页 Web 应用程序实际上是如何编码的?
【问题讨论】:
-
sendToTable是做什么的? -
将表单数据添加到另一个vue组件中
-
不,我的意思是字面意思是什么? Add it to your question。如果它是您的提交处理程序,它应该将数据发布到您的后端
-
您的服务器是否需要
application/x-www-form-urlencoded帖子正文或application/json?你在 Postman 中使用的是什么方法? -
我使用这个中间件 app.use(express.urlencoded({extended: false}));在邮递员中,我当然使用了 post 方法
标签: html node.js forms vue.js post