【问题标题】:How can I tell my NodeJS server which button was clicked in an HTTP form with two buttons?如何告诉我的 NodeJS 服务器在带有两个按钮的 HTTP 表单中单击了哪个按钮?
【发布时间】:2015-01-21 01:23:46
【问题描述】:

我正在尝试制作一个 NodeJS webapp,它在文本框中接受用户输入,然后根据单击的按钮将其用于两个功能之一(客户端)。我可以
1) 根据单击的按钮调用不同的操作 或
2)在帖子的正文中传递一些区分两个按钮的东西

我注意到,当按下不同的按钮时,使用以下代码对 console.log(req.body) 有两个不同的响应。 当我单击提交按钮时,我得到 “{句柄:'blahblahblah',hadunkachud:''}” 当我点击新鲜按钮时,我得到“{句柄:'blahblahblah',hingle:''}”

但是,我无法找到访问响应的唯一部分的方法,因为尝试访问 req.body 的第二个数组值什么也得不到

下面的代码在 Jade 中

extends layout

block content
    h1= title
    form#formEnterHandle(name="enterhandle",method="post",action="/showid")
        input(type="text", placeholder="themirage", name="handle")
        button(name = "hadunkachud", type="submit") submit
        button(name = "hingle", type = "submit") fresh

【问题讨论】:

    标签: javascript html node.js http


    【解决方案1】:

    使用输入而不是按钮,您可以传递值:

    extends layout
    
    block content
        h1= title
        form#formEnterHandle(name="enterhandle",method="post",action="/showid")
            input(type="text", placeholder="themirage", name="handle")
            input(name="submit", value = "hadunkachud", type="submit")
            input(name="submit", value= "hingle", type = "submit")
    

    现在发布的submit 值应该等于您单击的任何按钮。

    【讨论】:

    • 当我尝试运行代码时出错:“输入是自动关闭的,不应该有内容”(对于按钮名称),但我通过在输入中添加 value="fresh" 来解决它按钮文本正确显示
    • 如果我的另一个按钮是删除按钮怎么办?我将如何区分?
    • @codeinprogress 我将有一个删除按钮提交一个单独的表单,该表单发送一个DELETE 请求而不是POST - 如果您正确设置路由,它应该会访问一个单独的节点控制器。跨度>
    • @AlienWebguy 在我的表单中,更新按钮属于提交类型,删除属于按钮类型。我在删除按钮上使用 jquery click() 事件来调用 ajax 删除/发布请求到 '/delete' url,它调用我的控制器上的删除方法。我想知道是否有办法直接通过表单执行此操作,因此两个按钮都将是“提交”,但会点击不同的操作或单个操作,并且控制器将知道是更新还是删除。
    猜你喜欢
    • 2021-05-17
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多