gpt4 book ai didi

javascript - 使用 "POST"方法的 Node.js Sails html 数据无法传递给 Controller

转载 作者:行者123 更新时间:2023-11-30 14:27:55 24 4
gpt4 key购买 nike

我是 MVC 的新手。

当我想将表单数据从 ejs 文件传递​​到 Controller 时,它不起作用。

创建.ejs文件

<!--create.ejs-->
<h2 class="col-sm-offset-1">Person Create form</h2>

<form action="/person/create" method="POST" class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">Name: </label>
<div class="col-sm-8">
<input class="form-control" name="Person[name]" type="text">
</div>
</div>

<div class="form-group">
<label class="control-label col-sm-2">Age: </label>
<div class="col-sm-8">
<input class="form-control" name="Person[age]" type="number"
min="0" max="120">
</div>
</div>

<button class="btn btn-default col-sm-offset-2" type="submit" value="ADD">Submit</button>

PersonController.js

module.exports = {
create: function(req, res) {
if (req.method == "POST") {
Person.create(req.body.Person).exec( function(err, model) {
return res.send("Successfully Created!");
});
} else {
return res.view('person/create');
}
},

结果是它无法进入 (req.method == "POST") 条件。给我 404 错误。

最佳答案

404 是未找到结果。

当 POST 时确保你的目标是你的 Controller 功能尝试:

'POST /person/create': 'person/PersonController.create',

虽然为什么在使用 Controller 时会有一个名为 person 的子文件夹?

使用 Action

在 Sails v1.0 中,您可以将 Controller 功能分成更易于管理的操作。子文件夹 api/controllers/person 现在更有意义了。

您的 routes.js 文件将显示为 'POST/person/create': {action: 'person/create'},

为简单起见,我已将 req.body.Person 作为数组删除...

<form action="/person/create" method="POST" class="form-horizontal">

<input type="hidden" name="_csrf" value="<%= _csrf %>" />

<div class="form-group">
<label class="control-label col-sm-2">Full Name: </label>
<div class="col-sm-8">
<input class="form-control" name="fullName" placeholder="John Johnson" type="text">
</div>
</div>

<div class="form-group">
<label class="control-label col-sm-2">Age: </label>
<div class="col-sm-8">
<input class="form-control" name="age" type="number" min="0" max="120">
</div>
</div>

<button class="btn btn-default col-sm-offset-2" type="submit" value="ADD">Submit</button>

</form>

那么你的异步函数就像...

module.exports = {


friendlyName: 'Create Person.',
description: 'Creating a new person.',


exits: {

success: {
description: 'Person Created successfully.',
viewTemplatePath: 'person/review',
}

},

fn: async function (inputs, exits) {

if (!this.req.me) throw {redirect: '/'};

let params = this.req.allParams();

let person = await Person.create(params).fetch();

return exits.success({person:person});

}
}

关于javascript - 使用 "POST"方法的 Node.js Sails html 数据无法传递给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51649647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com