2009-12-04 7 views
0

Je ne suis pas trop avertis avec JSON de sorte que toute aide serait super ...JSON montrant variable en tant que texte

Je chargement d'une page via le .load de JQuery.

Je mets varname en tant que variable, mais il est affiché en tant que nom de variable réel pas ce que je l'ai mis. En d'autres termes, il apparaît comme "varname" au lieu de "class_id".

var varname = "class_id"; 

$(this).siblings(".container").load(loadurl,{varname:openedid,"all_ids":allids}); 

Firebug Screenshot

Répondre

3

C'est parce que (AFAIK) vous ne pouvez pas mettre expression comme un ID dans le constructeur de hachage, car ils sont automatiquement cités comme des chaînes.

En d'autres termes, c'est JavaScript valide

$(this).load(url, {name: "Foo", age: 13}); 

Les touches name et age sont là. En JavaScript, vous n'avez pas besoin de citer les clés d'un hachage, bien que dans un JSON strict, la citation soit nécessaire pour les clés. (Et dans certains cas, comme Jordan l'a suggéré dans les commentaires, il est nécessaire, par exemple, d'utiliser des mots réservés comme var comme clé de hachage)

Pour obtenir l'effet désiré, je suggérerais une solution longue (? tout de quelqu'un intelligent one-liner)

var varname = "class_id"; 

var data = {all_ids: allids}; 
data[varname] = openedid; 

$(this).siblings('.container').load(loadurl, data); 
+0

Citant les clés est nécessaire dans certains cas - par exemple IE6 tombe si vous utilisez un mot réservé comme clé, donc si vous essayez {classe: "some-value"} il vomira parce que "class" est un mot réservé. Je pense que IE7 + et d'autres navigateurs modernes sont soulagés de cette affliction. –

+0

intelligent one-liners? nous ne visons pas à atteindre un code * intelligent *. vous avez posté la bonne façon de le faire. rappelez-vous qu'il est plus facile d'écrire du code que de le déboguer, donc si vous écrivez un code aussi intelligent que possible, vous ne serez pas assez malin pour le déboguer plus tard. –

+2

@David Hedlund: Je suis d'accord; bien que je pense que nous tous ici sommes secrètement ravis quand ils pensent à des one-liners intelligents. Allez, admettez-le: p – kizzx2

Questions connexes