如何告诉我的 NodeJS 服务器在带有两个按钮的 HTTP 表单中单击了哪个按钮?

Posted

技术标签:

【中文标题】如何告诉我的 NodeJS 服务器在带有两个按钮的 HTTP 表单中单击了哪个按钮?【英文标题】:How can I tell my NodeJS server which button was clicked in an HTTP form with two buttons? 【发布时间】: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

【问题讨论】:

【参考方案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,它调用我的控制器上的删除方法。我想知道是否有办法直接通过表单执行此操作,因此两个按钮都将是“提交”,但会点击不同的操作或单个操作,并且控制器将知道是更新还是删除。

以上是关于如何告诉我的 NodeJS 服务器在带有两个按钮的 HTTP 表单中单击了哪个按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的android应用程序中添加带有计数器的like按钮

带有 mysql 的 NodeJS 服务器挂起

带有温度传感器的 SocketIO - 我几乎在我的 Raspberry Pi 上使用 NodeJS 和 SocketIO 完成了 DS18B20,如何提取 Promise data ?

如何使用 Nodejs 上传带有 json 的图像

在 imageView 上添加按钮

带有异步请求的 NodeJS