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 :

bug avec getJSON() sous jquery 1.4.1


Sujet :

jQuery

  1. #1
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut bug avec getJSON() sous jquery 1.4.1
    Bonsoir, afin de passer vers cette nouvelle mouture en douceur, j'ai commencer par vérifier chaque exécution de script.
    Seulement, j'ai un petit script qui rempli un select via une requête json et qui fonctionne très bien avec jquery 1.3.2.
    Depuis le passage vers la 1.4 le script ne fonctionne plus correctement.
    Dans firebug je vois bien la requête mais le select n'est jamais rempli.
    Voici le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $("select#idclc").change(function(){
    	   $.getJSON("/json/getidclc="+ $(this).val(),function(j){
    	    var options = '<option value="0">Aucune sous-catégorie</option>';
    	    for (var i = 0; i < j.length; i++) {
    	      options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
    	    }
    	    $("select#idcls").html(options);
    	  });
    LE html ce présente comme ceci :
    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
    18
    19
    <tr>
    <td class="label"><label for="idclc" class="inlinelabel">Catégorie :</label></td>
    </tr>
    <tr>
    <td><select id="idclc" name="idclc" class="select">
    <option value="0">Aucune catégorie</option>
    <option value="1">maison à vendre</option>
    <option value="2">vente chateau</option></select>
    </td>
    <tr>
    <td class="label"><label for="idcls" class="inlinelabel">Sous catégorie :</label>
    </td>
    </tr>
    <tr>
    <td>
    <select id="idcls" name="idcls">
    <option value="">Sélectionner une catégorie</option>
    </select>
    </td>
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Votre code JSON doit être mal formé. jQuery 1.4.1 est très strict sur le format JSON. Voir : http://api.jquery.com/jQuery.getJSON/

    Un exemple de code JSON bien formé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
      "foo": "The quick brown fox jumps over the lazy dog.",
      "bar": "ABCDEFG",
      "baz": [52, 97]
    }

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    voila la réponse de firebug avec jquery 1.3.2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [{optionValue: 1, optionDisplay: "grande maison"},{optionValue: 2, optionDisplay: "petite maison"}]
    J'ai également tester ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"optionValue": [1,2], "optionDisplay": ["grande maison","petite maison"]}
    Mais il ne fais rien seule la 1er méthode fonctionne uniquement avec jquery 1.3.2 j'y perd mon wallon
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Je ne vois pas de problème, voici mes codes de test, fichier testWallon.html :
    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
    18
    19
    20
    <!doctype html>
    <html lang="fr">
    <head>
    	<meta charset="utf-8" />
    	<title>Document sans nom</title>
    	<script charset="CP-1252" src="../lib/jquery-1.4.1.min.js"></script>
    	<script>
    		$(function() {
    			$.getJSON("testWallon.js", function(json){
    				$.each(json, function(i,item) {
    					$("<p>élément[" + i + "] = " + item.optionValue + ", " + item.optionDisplay + "</p>").appendTo("#conteneur");
    				});
    			});
    		});
    	</script>
    </head>
    <body>
    	<div id="conteneur"></div>
    </body>
    </html>
    fichier testWallon.js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [
        {
            "optionValue": 1,
            "optionDisplay": "grande maison"
        },
        {
            "optionValue": 2,
            "optionDisplay": "petite maison"
        }
    ]

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    Le probléme venais bien du format optionValue manquais de double quote
    J'ai aussi utiliser un each plutôt que for :
    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
    18
    $("select#idclc").change(function(){
    		$.getJSON("/json/getidclc="+ $('#idclc').val(),function(j){
    			if(j == undefined){
    				console.log(j);
    			}else{
    				var subcat = $('#idcls');
    				subcat.empty();
    				if(j !== null){
    					$.each(j, function(i,item) {
    						$('<option value="' +item.optionValue + '">' + item.optionDisplay + '</option>').appendTo("#idcls");
    						//$("<option>élément[" + i + "] = " + item.optionValue + ", " + item.optionDisplay + "</option>").appendTo("#idcls");
    					});
    				}else{
    					subcat.empty();
    				}
    			}
    		});
    	});
    A mon avis y à moyen d'aller plus loin en terme de debug car mon petit if undefine ne suffira pas
    Je vais tester les formats json (retourner via php par exemple), voir ceux qui passent et les autres.
    merci en tout cas
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

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

Discussions similaires

  1. Bug avec each sous IE
    Par omelhor dans le forum jQuery
    Réponses: 2
    Dernier message: 02/08/2011, 02h10
  2. [script.aculo.us] Sortable element : bug avec fckeditor sous ff !
    Par phpiste dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 04/09/2008, 09h49
  3. Bugs avec KompoZer sous Léopard ?
    Par pat734 dans le forum Apple
    Réponses: 3
    Dernier message: 22/07/2008, 00h08
  4. Bug d'affichage sous firefox avec un overflow:hidden
    Par scougirou dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 17/04/2007, 10h41
  5. Compilé avec VC++ sous vista avec sdl (bug)
    Par Narkoleptik dans le forum Visual C++
    Réponses: 3
    Dernier message: 06/03/2007, 18h47

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