2017-10-17 144 views
0

有没有办法获取我们按下的提交按钮的ID /名称?NodeJs/Express获取ID //按下提交按钮的名称

我有每一列上删除按钮的表。我想的名字或知道我需要删除

<form method="post" action="delete"> 
    <input type="submit" id="1" name="1" value="Delete"> 
    <input type="submit" id="2" name="2" value="Delete"> 
</form> 

哪一行,当我说我需要的ID或名字,我想它的服务器端的ID。

我想是这样的

app.post('/delete/:id', function(req, res) { 

,但如何使用:id作为一个变量来使用它

回答

1

使用req.params.id

请参阅http://expressjs.com/en/api.html#req.params

顺便说一句,你的行动只是说“删除”,它是一个带提交按钮的POST表单。所以它不会生成你需要的URL,即/ delete /:id。

您将需要动态生成的URL使用一些客户端的JS,然后单击事件。

+0

那么,怎样才能让我在我的NodeJS提交按钮的ID? –

+0

一种(相当简单而粗糙)的方式是将ID附加到表单动作,并在单击该按钮时提交它。 '' – Vasan

+0

如何在NodeJS中捕获id? –

0

做一个隐藏的输入并在之前写id的值到这个输入。 jQuery的例子:

jQuery(document).on('click', 'form > button', function(){ 
    jQuery('input[hidden]').val(jQuery(this).attr('id')); 
}); 
+0

即使你这样做,它不会将ID作为路径参数使用 – Vasan

+0

使用此解决方案,我可以使用req.body捕获输入值,但是如何为隐藏输入提供名称/ ID? –

+0

您必须在窗体中创建隐藏输入在NodeJs中,你可以在req.body中得到这个参数{命名你隐藏的输入}。 –

0

我不觉得这个名字值具有同样的限制元素的ID,但我会用一个更加明确的名称doesn't以数字开头。

的标准方法是将快速body-parser添加为middlware,然后将数据将在req.body可用。

const bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded()); 
app.use(bodyParser.json()); 

app.post('/delete/:id', function(req, res) { 
    console.log(req.body.1); 
}); 
0

如果你想生成基于id或名称的URL,那么我会建议不要使用窗体。而是按照您的意愿将所有输入内置在div或其他元素中,并仅为所有输入的输入赋予一个公共类,如下所示。

<div> 
    <input type="submit" class="myClass" id="1" name="1" value="Delete"> 
    <input type="submit" class="myClass" id="2" name="2" value="Delete"> 
</div> 

然后在jQuery中,你可以执行以下操作

$('.myClass').click(function(){ 
    var url= "/delete/" + this.id; 
    $.post(url, function(data) { 
     .... 
    }); 
});