2009-02-05 7 views
2

Je suis à la recherche de la «meilleure pratique» quant à l'emplacement où le JSON devrait être stocké s'il ne s'agit que d'un tableau de chaînes. Devrait-il être stocké dans une variable dans un bloc de script dans la page HTML? Devrait-il être stocké dans un fichier JavaScript en dehors du code HTML pour la séparation? Ou devrait-il être stocké dans le plugin lui-même?Meilleure pratique pour stocker les données JSON qui seront transmises à jQuery Plugin

S'il s'agit d'un fichier js externe, quel est le schéma de dénomination de «meilleure pratique» pour le fichier? Je sais que le nom de plugin jQuery accepté est jquery.plugin.js ou jquery.plugin-min.js (pour le fichier minifié).

Répondre

6

Cela dépend, si vous avez besoin JSON tout de suite, vous pouvez stocker n'importe où pour l'obtenir exécuté:

<script> var myJsonObj = { ... }; </script> 

Si c'est beaucoup de données et vous n'avez pas besoin des données tout de suite, vous pouvez toujours faire un appel ajax à un fichier nommé quelque chose comme "data.json".

Pour nommer le nom du plug-in, et il est vraiment à vous, mais oui je crois jquery.pluginname.js est le moyen standard de le faire.

+0

Donc, si je l'ai nommé data.json, je suppose que je venais d'utiliser getJSON pour obtenir le fichier? –

+0

$ .getJSON utilise le hack "script" tag pour obtenir les données, que vous ne devriez utiliser que pour les requêtes "inter-domaines", à mon avis. Un simple $ .ajax est suffisant. –

1

Je vais utiliser sktrdie pour ajouter l'extension .json pour un fichier comme celui-ci. Un piège que j'ai rencontré lors de la première utilisation de JSON est qu'une chaîne JSON n'est pas un fichier JavaScript valide.

Par exemple, si j'appelle un fichier avec ce contenu:

{ 
    'foos': 'whatever', 
    'bar': false, 
    'items': [1,2,3] 
} 

comme src d'une balise de script < >, je reçois cette erreur:

Error: invalid label 
Line: 2, Column: 1 
Source Code: 
'foos': 'whatever', 

Dans le passé, je ai effectivement caché des chaînes JSON dans <divs> ou portées comme ceci:

<div id="jsonStorage" style="display:none"> 
{'foos': 'whatever','bar': false,'items': [1,2,3]} 
</div> 

J'ai également utilisé des champs de formulaire cachés pour cela.

+0

Comment référenceriez-vous une constante de chaîne dans JS? Vous devez assigner 'var a = {' foos ':' quel que soit '}' et inclure le JS. –

0

Si cela fait partie du plugin, c'est-à-dire de la configuration par défaut, je le stockerais dans le fichier plugin lui-même. Si c'est une config externe pour le plugin, alors cela dépend. Il peut être judicieux de le stocker dans une variable dans le code HTML, à savoir

<script> 
var myConfig = { 
    "foo" : "bar" 
}; 
</script> 

Cela pourrait notamment être le cas si vous avez besoin de JSON être généré par votre code back-end. Vraiment, la réponse est "ça dépend" - pouvez-vous donner plus de détails?

Questions connexes