50 votes

Passage de paramètres à une fonction JQuery

Je crée du HTML avec une boucle qui a une colonne pour l'action. Cette colonne est un hyperlien qui, lorsque l'utilisateur clique dessus, appelle une fonction JavaScript et passe les paramètres...

exemple :

<a href="#" OnClick="DoAction(1,'Jose');" > Click </a>
<a href="#" OnClick="DoAction(2,'Juan');" > Click </a>
<a href="#" OnClick="DoAction(3,'Pedro');" > Click </a>
...
<a href="#" OnClick="DoAction(n,'xxx');" > Click </a>

Je veux que cette fonction appelle une fonction Ajax jQuery avec le bon code paramètres.

Une aide ?

86voto

tvanfosson Points 268301

Utilisation de POST

function DoAction( id, name )
{
    $.ajax({
         type: "POST",
         url: "someurl.php",
         data: "id=" + id + "&name=" + name,
         success: function(msg){
                     alert( "Data Saved: " + msg );
                  }
    });
}

Utilisation de GET

function DoAction( id, name )
{
     $.ajax({
          type: "GET",
          url: "someurl.php",
          data: "id=" + id + "&name=" + name,
          success: function(msg){
                     alert( "Data Saved: " + msg );
                   }
     });
}

EDIT :

Une meilleure façon de procéder, qui fonctionnerait (en utilisant GET) si javascript n'était pas activé, serait de générer l'URL pour le href, puis d'utiliser un gestionnaire de clics pour appeler cette URL via ajax.

<a href="http://stackoverflow.com/someurl.php?id=1&name=Jose" class="ajax-link"> Click </a>
<a href="http://stackoverflow.com/someurl.php?id=2&name=Juan" class="ajax-link"> Click </a>
<a href="http://stackoverflow.com/someurl.php?id=3&name=Pedro" class="ajax-link"> Click </a>
...
<a href="http://stackoverflow.com/someurl.php?id=n&name=xxx" class="ajax-link"> Click </a>

<script type="text/javascript">
$(function() {
   $('.ajax-link').click( function() {
         $.get( $(this).attr('href'), function(msg) {
              alert( "Data Saved: " + msg );
         });
         return false; // don't follow the link!
   });
});
</script>

4voto

tanathos Points 4145

Si vous voulez faire un appel ajax ou une simple fonction javascript, n'oubliez pas de fermer votre fonction avec le return false.

comme ça :

function DoAction(id, name) 
{ 
    // your code
    return false;
}

0voto

Leandro Ardissone Points 1019

Voulez-vous transmettre des paramètres à une autre page ou à la fonction uniquement ?

Si c'est seulement la fonction, vous n'avez pas besoin d'ajouter le $.ajax() que tvanfosson a ajouté. Ajoutez simplement le contenu de votre fonction à la place. Par exemple :

function DoAction (id, name ) {
    // ...
    // do anything you want here
    alert ("id: "+id+" - name: "+name);
    //...
}

Cela renverra une boîte d'alerte avec les valeurs id et name.

0voto

Roko Mise Points 1

Essayez quelque chose comme ceci

#vote_links a attrapera tous les ids à l'intérieur des liens de vote div id ...

<script type="text/javascript">

  jQuery(document).ready(function() {
  jQuery(\'#vote_links a\').click(function() {// alert(\'vote clicked\');
    var det = jQuery(this).get(0).id.split("-");// alert(jQuery(this).get(0).id);
    var votes_id = det[0];

   $("#about-button").css({
    opacity: 0.3
   });
   $("#contact-button").css({
    opacity: 0.3
   });

   $("#page-wrap div.button").click(function(){

0voto

dementiev Points 139

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X