Bonjour,

J'ai effectué un tableau des pays avec un boutton qui me donnera le détail des sportifs de chaque pays et j'aimerais que ma page ne se refresh pas à chaque clique du boutton et donc j'ai vue qu'il fallait utiliser de l'AJAX mais je sais pas comment détecter le bon boutton avec le bon name quand je fait mon .click() en jquery, voila mes différents codes

mon formulaire :

 <td>
      <form action="" method="post" name="form_{{ aCountries.theCountries }}" id="form_{{ aCountries.theCountries }}">
              <input name="countries" type="hidden" value="{{ aCountries.theCountries }}" />
              <button class="btn btn-primary" type="button" name="detail_{{ aCountries.theCountries }}" id='detail_{{ aCountries.theCountries }}'      data-target="#modalCompet" data-toggle="modal">Detail</button>
        </form>
</td>

mon Ajax :

  $('detail_idBoutton').click(function() {
        //extract the name of the button clicked
        var id = $(this).attr('name');
        //get the button id from name.
        var buttonId = id.split('detail')[1];
        $.ajax({
            type: "post",
            url: "MVC/requestAjax/displayCptrByCtrs.php",
            data: $("#form_" + buttonId + "").serialize(),
            success: function() {
                console.log('coucou')
            },
            error: function () {
               alert("FAILED");
            }
        });
      });

6 réponses


AaFrederic Husson
Réponse acceptée

salut

$('#detail_idBoutton').click(function() {

mais cet id n'existe pas

tu ferais mieux de faire:

$('.btn').click(function() {

ou bien

$('.btn-primary').click(function() {

Microse
Auteur

sa marche merci AaFrederic Husson

content d'avoir pu aider on m'as deja beaucoup aidé aussi ici

Bonsoir.
La solution de AaFrederic Husson n'est pas incorrecte, mais trop générale étant donné que les classes btn et btn-primary sont de Bootstrap et qu'elles sont autant utilisées pour les éléments button que pour les liens.
Tu devrais plutôt faire par exemple :

$('[id^="detail_"]').click(function () {
    // ...
});

De cette manière, tous les éléments ayant comme valeur de l'attribut id commençant par detail_ seront concernés par cet évènement du click.
Voir Attribute Starts With Selector [name^=”value”].

Merci @Lartak :D
j'avais besoin de qqchose de presque similaire :D

@plus

Pierre

Microse
Auteur

merci @lartek pour cette deuxième solution :)