Accueil du site > Jquery > Jquery 1.4 , attention incompatibilité ... JSON

Jquery 1.4 , attention incompatibilité ... JSON

samedi 23 janvier 2010, par fabrizio

La nouvelle version de la jquery , en occurrence la version jquery-1.4.js vient de sortir. Au travers de l’opération les 14 jours de jquery , les nouveautés et les évolutions sont présentées.

En faisant les premiers tests et en me basant sur les démos et vidéos du site, il s’avère que quelques changements peuvent créer une incompatibilité. Je vais essayer dans cet article de faire remonter les points importants pour que vous puissiez , si c’est nécessaire , adapter vos scripts. Mais il est IMPORTANT de signaler que certaines erreurs ne seront peut-être pas forcement dans le javascript. C’est le cas avec la nouvelle prise en compte du format Json. Des erreurs seront possible mais cette fois dans ce que vous renverra le langage serveur ( PHP , java ...)

Attention ajax - Json - jquery-1.4

Ce point est très IMPORTANT car cela pourra vous valoir quelques arrachages de cheveux !!!!! Cette modification en fait n’a aucun impact côté javascript. Par contre ce que votre serveur renvoye va avoir une importance capitale :

Les syntaxes utilisables avant étaient très larges :

{ foo: “bar” }  // format javascript juste , format json faux

{ “foo” : “bar” }  // format javascript juste , format json juste

{ ‘foo’: “bar” }  // format javascript juste , format json faux

{ “foo” : ‘bar’ }  // format javascript juste , format json faux

Mais maintenant la plus part d’entre elles vont vous renvoyer des erreurs. Il ne reste plus qu’une syntaxe valide.

{ 'foo' : “bar” } // ERREUR , les simples quotes ne sont pas valides
{ “foo” : 'bar' } // ERREUR , les simples quotes ne sont pas valides
{ foo: “bar” }  // // ERREUR , la clé et la valeur doivent toujours être entre guillemets

{ “foo” : “bar” } // seul format Json valide

La règle de notation du Json valide et correct est : le nom de la variable entre guillemets , suivi d’un deux point : , la valeur correspondante entre guillemets.

IMPORTANT : seul les guillemets marchent , pas les simples quotes !!!!!

Si vous passez à la version 1.4 de jquery il est possible que ’tout d’un coup’ vos requêtes ajax génère une erreur. De même si vous développez de nouveaux scripts ajax et qu’ils ne fonctionnent pas, pensait à regarder si vos formats Json sont corrects.

Conclusion

Je vais tacher de suivre les différents changements et les éventuelles incompatibilités et de vous tenir au courant dans cet article. Merci de votre lecture et bon dev !!!

5 Messages de forum

  • Merci beaucoup pour ces informations !

    Les écritures ci-dessous sont-elles valides ?

    { "entier": -3 }

    { "booleen": true }

     ?

    Répondre à ce message

    • Jquery 1.4 , attention incompatibilité ... JSON 3 mars 2010 07:26, par fabrizio

      Malheureusement elles ne fonctionneront pas .... Pour que cela marche tu es tenu d’écrire

      { "entier": "-3" }

      { "booleen": "true" }

      Répondre à ce message

      • Merci. A ce jour, lorsque mes "appels AJAX" au serveur sont supposés me retourner quelque chose, il s’agit de HTML ou de Javascript. Grosso-modo, dans le cas du HTML, je "l’injecte" dans un élément du DOM via, au plus simple, quelque chose comme $("#id_element").html( le_retour_de_l_appel_AJAX) ;

        S’agissant d’un retour de javascript, même si j’ai pu lire ici ou là que "eval is evil", je procède ainsi : var xxx = eval( "(" + le_retour_de_l_appel_AJAX + ")" ) ;

        Ce "retour AJAX" pour du javascript étant toujours dans un format qui me semblait être du JSON, c’est à dire quelque chose comme

        {
          a: "chaine",
          b:-1,
          c:true,
          d:{ x:"hip", y:"hop"}
        }

        A priori, pour mon usage, je serait tenté de répondre qu’il n’est pas nécessaire de modifier quoi que ce soit avec la version 1.4 de JQuery, dans la mesure où le format de retour est correct d’un point de vu "javascript", et que donc eval() devrait fonctionner comme aujourd’hui, sans problème, vu que eval() n’est pas pas une "fonction JQuery" mais une "fonction Javascript"...

        Au final, je ne vois pas dans quelle(s) situation(s) il faudrait modifier un "retour JSON" du serveur ? Pour quel(s) usage(s) ? Pourriez-vous éclairer ma lanterne ?

        D’avance MERCI :)

        Répondre à ce message

        • Jquery 1.4 , attention incompatibilité ... JSON 3 mars 2010 16:01, par fabrizio

          Merci pour ta question. Comme tu le dis à juste titre si tu utilises une fonction de type eval l’objet que tu reçois, et que tu donnes en exemple, est traité correctement. L’utilisation d’un Json ’strict’ ( le mot est impropre car il n’existe qu’une seule syntaxe valide pour lui ) devient indispensable par exemple si tu utilises dans $.ajax un dataType : ’json’ . A ce moment là tu auras une erreur et tu ne pourras pas accéder à ta fonction eval() par exemple.

          En fait le fait de pouvoir utiliser un json ’maison’ avec jquery était une possibilité offerte par la librairie. Cette option a été abandonné. Pourquoi je l’ignore, mais probablement parce que c’est un format de plus en plus utilisé.

          Répondre à ce message

Laisser un commentaire