2010-02-20 6 views
0

J'ai une page où j'affiche une liste d'utilisateurs et à côté de chaque utilisateur - il y a le lien "Ajouter comme ami".Jquery soumettre plusieurs liens

Maintenant, quand un utilisateur clique sur ce lien "Ajouter comme ami" - Je veux appeler Jquery et soumettre cette demande au backend PHP.

Généralement mon expérience avec Jquery implique d'avoir une forme unique dans la page et la présentation ce formulaire via Jquery - Chaque forme a une carte d'identité -. En utilisant cet identifiant que j'appelle la fonction soumettre $ (« # invite_form ») soumettre (function() - J'accède aux éléments de formulaire de cette façon var emailval = $ ("# emails"). val();

Mais maintenant je n'ai pas de formulaire et cette liste d'amis est générée en boucle. Donc voici les doutes que j'ai

1) Ai-je besoin de créer un identifiant unique dans la boucle pour chaque tag href

2) Comment modifier ce $ ("# invite_form"). Submit (function() - Deviendra-t-il ("# ahref1"). Click (function() où ahref1 est l'identifiant unique de la balise href

3) Comment puis-je accéder au champ friend_id en fonction Jquery qui est présent dans quelque chose de valeur href comme href = «/action? friend_id = 32 »

Je ne sais pas si je vais sur la bonne voie Merci

Répondre

1

Vous pouvez soumettre à un script back-end en utilisant .post $() ou .get $() en jQuery

Un exemple:

$("#ahref1").click(function(){ 
    var this_friend_id = $(this).prev('input.friend_id').val(); 
    // Assuming that you store the id in a hidden input field like <input type="hidden" class="friend_id" val="32" /> which is defined just before the a href. 
    $.get('/action', { 
    friend_id: this_friend_id 
    }, function(data){ 
     // callback after the ajax request 
     alert("The response is : "+data); 
    }); 
}); 

Cela devrait résoudre le problème.

+0

Merci GeekTantra - mais comment puis-je gérer les différents id ahref Comme je l'ai dit - ceux-ci sont générés dans la boucle - il y aura donc 10 lignes différentes. Maintenant, même si je crée un identifiant unique pour chaque tag ahref - je vais devoir créer 10 fonctions différentes comme $ ("# ahref1"). Cliquez sur (function() $ ("# ahref2"). Cliquez (fonction () $ ("# ahref3"). click (function() $ ("# ahref4"). click (function() problème similaire, je vais avoir avec le champ d'entrée avec ID ami Merci – Rick

+1

Je vais ajouter un commentaire plutôt que ma propre réponse, puisque GeekTantra l'a presque parfait.La magie de jQuery est qu'un sélecteur peut correspondre à plusieurs éléments, donc une seule fonction de clic peut servir pour tous vos liens Notez que l'ID n'apparaît pas à l'intérieur La fonction de GeekTantra - elle utilise juste "ceci" pour savoir quel lien a été cliqué Donc si vous changez "$ (" # ahref1 ")" au début de ce code à "$ (" id^= 'ahref' ")" la La fonction click s'appliquera à tout élément dont l'identifiant commence par "ahref", et cela devrait fonctionner pour tous vos liens. –

+0

Merci de partager cette information – Rick

0

1) Non, ce n'est pas le cas. Vous pouvez toujours créer une boucle jquery, avec .each(), et personnaliser votre script comme

$(document).ready({ 
    $('#friend_list a').each(function() { 
     // Point to current <a> 
     var $this = $(this); 
     // ... your code for each a in your list 
    }); 
}); 

2) Vous pouvez changer la fonction d'envoi comme

$(document).ready({ 
    $('#friend_list a').each(function() { 
     var $this = $(this); 
     // Save current href 
     var href = $this.attr('href'); 
     // When user click 
     $this.click(function(e) { 
      // Doesn't follow the href path 
      e.preventDefault(); 
      // ... your custom operation here 
     }); 
    }); 
}); 

3) Vous pouvez utiliser regex

$(document).ready({ 
    $('#friend_list a').each(function() { 
     var $this = $(this); 
     var href = $this.attr('href'); 
     $this.click(function(e) { 
      e.preventDefault(); 
      // Assuming your link is in form "/action?friend_id=32" 
      var re = new RegExp("\d+"); 
      var id = re.exec(href); 
      // I prefer AJAX method, this is just a sample, to complete 
      $.post('/action', 
        { friend_id: id }, 
        function(data) { 
         // ... result here 
        }); 
     }); 
    }); 
}); 
+0

Votre exemple de code a parfaitement fonctionné pour mes besoins Merci beaucoup d'avoir pris le temps de le mettre en place Appréciez-le – Rick

+0

De rien. –