Décrivez ici votre problème ou ce que vous cherchez à faire.
Bonjour,
je n'arrive pas à faire passer mes variables pk et name vers ma fonction callback.
Je vous fais grâce de tout mes essais mais j'ai réussi à les afficher dans la fenêtre bootbox.confirm. Ensuite, plus rien!

Le but est de les envoyer en json vers la page supprimerFiche.php

Voici la ligne de mon tableau pour envoyer mes variables vers la fonction supprimerFiche:

"html_data += '<td style="cursor:pointer; color:red;" data-name="supprimerFiche" class="supprimerFiche" data-type="text" data-pk="'+data[count].idFiche+'" ><i class="fa fa-trash" aria-hidden="true"></i></td>';"

Voici la fonction supprimerFiche:

"
$('.supprimerFiche').click(function(){
        var href = $(this).attr('href');

        bootbox.confirm({
            title: 'Effacer cette fiche? ',
            message: 'Effacer cette fiche est irréversible et supprimera également toutes les photos associées!  ',
            buttons: {
            cancel: {
            label: '<i class="fa fa-times"></i> Conserver'
            },
            confirm: {
            label: '<i class="fa fa-check"></i> Supprimer'
            }
            },
            callback: function (result ) {
                if(result == true) {
                    $.post( "inc/supprimerfiche.php", { pk: $(this).data('pk'), name: $(this).data('name'), value: 2 },
                    function( json ) {
                        var obj = '#fiche-' + parseInt(json.pk) + '';
                        $(obj).fadeOut( 1600, "linear" );
                        }
                    );
                    bootbox.alert('Okay, la fiche a été effacée!' );    
                } else {
                    bootbox.alert('Okay, la fiche n\'a pas été effacée!' );
                }
            }
        });  // fin bootbox confirm
    });  // fin supprimer fiche
   "
Avec mon code, les variables pk et name sont retournées en undefined!

Pouvez-vous m'aider?

Olivier

5 réponses


Bonjour ou bonsoir, d'apres ton code tu essais de récupérer la valeur de l'attribut href sur cet element <td style="cursor:pointer; color:red;" data-name="supprimerFiche" class="supprimerFiche" data-type="text" data-pk="'+data[count].idFiche+'" ><i class="fa fa-trash" aria-hidden="true"></i></td alors que tu ne lui a pas passé d'attribut href chose qui ne sera pas correcte d'ailleur vu que <td></td> n'accepte pas cet attribut

Hexa
Auteur

Bonjour Stéphane,
oui, tu as bien compris!
Mais cette partie fonctionne .
Je me suis amusé à afficher pk dans le titre pour voir jusqu'où j'arrive à récupérer cette valeur:

"
        bootbox.confirm({
            title: 'Effacer cette fiche? ' + $pk + ' ',
            "

Et ça, ça fonctionne! mais $_post plus bas reste vide!

alors c'est peut etre du au fait que le $(this) dans cette ligne

$.post( "inc/supprimerfiche.php", { pk: $(this).data('pk'), name: $(this).data('name'), value: 2 },

ne fasse plus réfrérence à cette fonction

$('.supprimerFiche').click(function(){})

mais plutot à celle ci callback: function (result )
donc essais de stocker data-pk et data-name dans des variables au tout début et tu réessai ou tu peut tout simplement binder le this de cette fonction callback: function (result )

Hexa
Auteur

Oui, c'est ce que j'ai essayé de faire, mais sans succès...!

"
$('.supprimerFiche').click(function(){
        var href = $(this).attr('href');
        $pk = $(this).data('pk');
        $name  = $(this).data('name');
        bootbox.confirm({
            title: 'Effacer cette fiche? ',
            message: 'Effacer cette fiche est irréversible et supprimera également toutes les photos associées!  ',
            buttons: {
            cancel: {
            label: '<i class="fa fa-times"></i> Conserver'
            },
            confirm: {
            label: '<i class="fa fa-check"></i> Supprimer'
            }
            },
            callback: function (result ) {
                if(result == true) {
                    $.post( "inc/supprimerfiche.php", { pk: $pk, name: $name, value: 2 },
                    function( json ) {
                        var obj = '#fiche-' + parseInt(json.pk) + '';
                        $(obj).fadeOut( 1600, "linear" );
                        }
                    );
                    bootbox.alert('Okay, la fiche a été effacée!' );    
                } else {
                    bootbox.alert('Okay, la fiche n\'a pas été effacée!' );
                }
            }
        });  // fin bootbox confirm
    });  // fin supprimer fiche

"

T'as essayé de faire un console.log des tes deux variables ? İl faut le faire pour vérifier s'il elles sont bien récupérer.