2017-10-17 7 views
0

Existe-t-il un moyen d'obtenir l'ID/le nom du bouton d'envoi sur lequel nous appuyons?NodeJs/Express Get ID // nom du bouton d'envoi pressé

J'ai un tableau avec sur chaque colonne un bouton de suppression. Je veux obtenir le nom ou l'ID de savoir quelle ligne je dois supprimer

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

quand je dis que je besoin de l'ID ou le nom, je le veux côté serveur.

J'ai essayé quelque chose comme ça

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

mais comment utiliser: id comme variable pour l'utiliser

Répondre

1

En utilisant req.params.id

S'il vous plaît se référer http://expressjs.com/en/api.html#req.params

Par ailleurs, votre l'action dit simplement "supprimer" et c'est un formulaire POST avec des boutons de soumission. Il ne générera donc pas l'URL dont vous avez besoin, qui est/delete /: id.

Vous devrez générer l'URL dynamiquement en utilisant certains événements JS et de clic côté client.

+0

Alors, comment puis-je obtenir l'ID de mon bouton soumettre à NodeJS? –

+0

Un moyen (plutôt simple et brut) serait d'ajouter l'ID à l'action du formulaire et de l'envoyer lorsque le bouton est cliqué. '' – Vasan

+0

Comment saisir l'ID dans NodeJS alors? –

0

Effectuez une entrée masquée et avant de l'envoyer, écrivez la valeur de id dans cette entrée. exemple jQuery:

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

Même si vous faites cela, il ne mettra pas l'ID dans l'URL comme paramètre de chemin – Vasan

+0

Avec cette solution je peux attraper la valeur d'entrée avec req.body mais comment donner un nom/id à l'entrée cachée? –

+0

Vous devez créer une entrée cachée dans le formulaire Et dans NodeJs vous obtenez ce param dans req.body. {nommez l'entrée cachée}. –

0

Je pense ne pas la valeur de nom a même restriction que l'ID d'élément, mais j'utiliser un nom plus explicite qui commencent avec un nombre Indifférent Fume.

La méthode standard consiste à ajouter le body-parser en tant qu'agent intermédiaire, puis les données seront disponibles dans le répertoire.

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

Si vous voulez générer l'URL en fonction de l'identifiant ou du nom, je vous suggère de ne pas utiliser le formulaire. À la place, enveloppez toutes les entrées à l'intérieur de div ou d'autres éléments comme vous le souhaitez et donnez une classe commune uniquement pour ces entrées à toutes les entrées comme indiqué ci-dessous.

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

Puis, en jquery vous pouvez effectuer les opérations suivantes

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