IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Json et tableau à une dimension


Sujet :

jQuery

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut Json et tableau à une dimension
    Bonjour,

    Voilà je cherche à faire quelque chose qui me parait simple mais je me prends vraiment le chou dessus
    Je tiens à préciser que mon exemple va paraître absurde question fonctionnalité, mais c'est juste pour simplifier ma question.

    J'ai une page web avec une liste de checkbox. Au clic sur un élément de la page, je voudrai afficher la liste des checkbox cochées dans une <div>, tout cela en ajax.
    Je fais donc comme cela :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <div id="clique"><h1>CLIQUE</h1></div>
    <form>
    <input type=checkbox" name="filtre" value="a">
    <input type=checkbox" name="filtre" value="b">
    <input type=checkbox" name="filtre" value="c">
    <input type=checkbox" name="filtre" value="d">
    </form>
    <div id="affiche"></div>
     
    <script>
     
    $(#clique").click(function(event) {
    var valeurs = [];
    $('input:checked[name=filtre]').each(function() {
    valeurs.push($(this).val());
    });
    afficheCheckbox(valeurs);
    });
     
    function afficheCheckbox(v){
    var jqxhr = $.ajax({
    type: 'post',
    url: 'charge_checkbox.php',
    dataType: 'json',
    contentType: 'application/json',
    data: v
    })
    .done(function(response, textStatus, jqxhr) {
    $("#affiche").html(response);
    })
    }

    En gros, je veux passer un tableau non-associatif à un fichier php via ajax, afin d'effectuer des traitements dans celui-ci et de renvoyer du html que j'afficherai dans ma page.
    Le problème c'est que je ne sais pas comment exploiter côté php ce que j'envois côté JS (un tableau non-associatif).
    Je me doute que je dois utiliser $_POST, mais $_POST de quoi ?
    Avec la methode GET, j'avais des noms de variables à récupérer du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    type: 'get',
    url: 'charge_checkbox.php',
    dataType: 'html',
    data: 'v='+v
    Et je récupérai un $_GET['v']. Mais là...

    Merci de votre aide !!!

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    en regardant rapidement il y a au moins 2 choses qui interpellent

    Code HTML-JS mal formé, manque des ".
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type=checkbox" name="filtre" value="a">
    ou là encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(#clique ").click(function(event) {
    Code JS tu récupères la variable v où dans ton bout de code, re indenté et corrigé pour plus de lisibilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $("#clique ").click(function(event) {
    var valeurs = []; $('input:checked[name=filtre]').each(function() {
      valeurs.push($(this).val());
    }); afficheCheckbox(valeurs);
    });
     
    function afficheCheckbox(v) {
      var jqxhr = $.ajax({
        type: 'post',
        url: 'charge_checkbox.php',
        dataType: 'json',
        contentType: 'application/json',
        data: v
      }).done(function(response, textStatus, jqxhr) {
        $("#affiche").html(response);
      })
    }
    Tout ceci est donc à corriger avant de continuer quoique ce soit !

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut
    Merci de ta réponse.

    Oui désolé pour les fautes de syntaxe, mon pc de dev n'accède pas à internet et j'ai un peu recopié à la va-vite pour l'exemple, mais je te confirme qu'il n'y a pas d'erreur de ce type dans mon code.

    En fait ce que je cherche, c'est ce que je dois mettre dans mon code php pour récupérer mon tableau contenant mes checkbox sélectionnées (que j'envois via ajax), afin de les afficher dans ma page.

    Fichier "charge_checkbox.php"
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $myTab = ???
    $myTabSize = sizeof($myTab);
    $retourHtml = "<p>";
    for($i=0 ; $i<$myTabSize ; $i++){
        $retourHtml .= $myTab[$i]."<br>";
    }
    $retourHtml .= "</p>";
    echo $retourHtml;
    ?>

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Salut,
    si vous me permettez d'intervenir, dans Ajax si tu modifies en puis en php tu mets
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $myTab = $_POST["donnee"]
    normalement ça devrait fonctionner.

    Ajoute aussi .fail() dans ajax pour voir si y a des erreurs dans le fichier php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function afficheCheckbox(v) {
      var jqxhr = $.ajax({
        ....,
        data:{donnee: v}
      }).done(function(response, textStatus, jqxhr) {
        $("#affiche").html(response);
      }).fail(function(err){
        alert("Erreur ajax :"+err.responseText);
      });

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut
    Bonjour Toufik83,

    J'ai essayé mais ça ne fonctionne pas. J'obtiens "500 - Erreur interne au serveur - La ressource que vous recherchez présente un problème, elle ne peut donc être affichée".
    J'ai donc :
    index.php
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <div id="clique"><h1>CLIQUE</h1></div>
    <form>
    <input type="checkbox" name="filtre" value="a">
    <input type="checkbox" name="filtre" value="b">
    <input type="checkbox" name="filtre" value="c">
    <input type="checkbox" name="filtre" value="d">
    </form>
    <div id="affiche"></div>
     
    <script>
    $("#clique ").click(function(event) {
        var valeurs = []; $('input:checked[name=filtre]').each(function() {
            valeurs.push($(this).val());
        }); 
        afficheCheckbox(valeurs);
    });
     
    function afficheCheckbox(tab) {
        var jqxhr = $.ajax({
            type: 'post',
            url: 'charge_checkbox.php',
            dataType: 'json',
            contentType: 'application/json',
            data:{donnees:tab}
        })
        .done(function(response, textStatus, jqxhr) {
            $("#affiche").html(response);
        })
        .fail(function(err){
            alert("Erreur ajax :"+err.responseText);
        });
    }

    et,
    charge_checkbox.php
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    $myTab = $_POST['donnees'];
    $myTabSize = sizeof($myTab);
    $retourHtml = "<p>";
    for($i=0 ; $i<$myTabSize ; $i++){
        $retourHtml .= $myTab[$i]."<br>";
    }
    echo $retourHtml."</p>";
    ?>

    A noter que même en ne faisant qu'un "echo $_POST['donnees'][0]" dans mon fichier php, j'ai la même erreur.

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    le problème est dans dataType:"json" et contentType: 'application/json', enlève ces deux lignes d'ajax et tout fonctionnera comme il le faut.

    Si tu veux le faire en "json", dans ce cas la fonction jQuery et le fichier php doivent être ainsi
    Code jQuery : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    function afficheCheckbox(tab) {
        var jqxhr = $.ajax({
            type: 'post',
            url: 'charge_checkbox.php',
    	dataType: 'json',
            data:{donnees:tab}
        })
        .done(function(response, textStatus, jqxhr) {
    		$('#affiche').html('');
    		$(response).each(function(k,v){
    			$('#affiche').append("<p>"+v+"</p>");
    		});
        })
        .fail(function(err){
            alert("Erreur ajax :"+err.responseText);
        });
    }
    et le fichier php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    $retour=[];
    $myTab = $_POST['donnees'];
    $myTabSize = sizeof($myTab);
    for($i=0 ; $i<$myTabSize ; $i++){
        $retour[] = $myTab[$i];
    }
    echo json_encode($retour);
    ?>
    j'ai testé le code.

  7. #7
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut
    Super, merci beaucoup !

    En fait je pensais que l'on ne pouvais passer un tableau qu'en utilisant le format json et n'étant pas familier avec ça, j'ai fait un peu n'importe quoi en regardant à droite à gauche sur internet

  8. #8
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Si le souci est résolu , je t'invite d'appuyer sur le bouton en bas de la page.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. masque gaussien pour un tableau à une dimension
    Par bilzzbenzbilz dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 20/02/2009, 15h04
  2. [FPDF] Tableau à une dimension contenant des valeurs
    Par kluck3000 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 23/05/2008, 13h34
  3. Tri d'un tableau à une dimension
    Par Philippe PONS dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/02/2008, 18h51
  4. Réponses: 4
    Dernier message: 17/01/2008, 17h06
  5. tableau à une dimension sans taille
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/11/2007, 20h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo