【问题标题】:KeystoneJS post request does not workKeystoneJS 发布请求不起作用
【发布时间】:2017-03-30 04:24:01
【问题描述】:

这是我的看法

form.contact-form(method="post").col-md-12
            input(type='hidden', name='action', value='notes.edit' + data.post.id)
            .form-group.col-md-12
            .form-group.col-md-12
                    label.text-center Title
                    input.form-control.input-box(type='text', name='title', value=data.post.title, placeholder='Title' required)
            .form-group.col-md-12
                    label.text-center Content *
                    .row
                        .col-md-6
                            input.form-control.input-box(type='text', name='briefcontent', value=data.post.content.brief, placeholder='brief content')
                        .col-md-6
                            input.form-control.input-box(type='text', name='extendedcontent', value=data.post.content.extended placeholder='extended content')
            button(type='submit').btn.btn-success Edit Notes
            form.contact-form(method="post").col-md-12

这是我的发帖路线

view.on('post', { action: 'notes.edit'}, function(next) {
    console.log('edit notes')
    res.redirect('/')

});

这是我的路由绑定

// Setup Route Bindings
exports = module.exports = function (app) {
// Views
app.all('/', routes.views.index);
app.get('/blog/:category?', routes.views.blog);
app.get('/blog/post/:post', routes.views.post);
app.get('/gallery', routes.views.gallery);
app.get('/registration', routes.views.registration);
app.post('/registration', routes.views.registration);
app.all('/signin', routes.views.signin);
app.all('/signout', routes.views.signout);
app.all('/contact', routes.views.contact);
app.all('/addnotes', routes.views.addnotes);
app.all('/editnotes/:post', routes.views.editnotes);
app.all('/editnotes', routes.views.editnotes);

post 请求似乎根本不起作用。我尝试使用 console.log 进行发布请求,但未出现在终端中。

【问题讨论】:

    标签: javascript node.js keystonejs


    【解决方案1】:

    您将data.post.id 附加到您输入的value 属性。因此,输入值变为 不是 notes.edit 的值。您的 POST 路由需要一个 action 值仅为 notes.edit 的请求,因此该路由不会处理 POST 请求。

    在您的 Pug 模板中:

     input(type='hidden', name='action', value='notes.edit')
    

    编辑:

    您的表单中有第二个表单。这也可能与它有关。尝试删除它。

    【讨论】:

    • 是的,我试过删除它,但它仍然不起作用。
    • 我们正在检查上面的哪条路线?是否设置为接受所有请求(例如app.all(...)?如果您从 POST 请求中删除 { action: 'notes.edit'} 对象,是否有效?
    • 我们正在检查的路由是 'app.all('/editnotes/:post', routes.views.editnotes);'
    • 是的,就是接受get、delete、post等所有请求。
    • 我从翡翠视图中删除了notes.edit,我从控制台得到的是POST /editnotes/(帖子标题)
    猜你喜欢
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 2019-01-27
    • 2017-01-28
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多