2014-05-21 3 views
0

Quels sont les arguments pour savoir quand utiliser un fichier externe JSON comme avecJSON fichier externe vs défini dans JS

jQuery
$.getJSON('external.json',function(data){}); 

(récupération ajax) par rapport à la définition en javascript avec

var myJson = { "someVar": { "1": ["test1","test2"], "2": ["test3","test4"]} } 

Quelle est la "bonne" façon de le faire? Cela dépend-il de la longueur de JSON ou y a-t-il d'autres facteurs qui peuvent vous dire quelle approche utiliser? Comme je le vois: choisissez entre charger un autre fichier qui est censé être lent lorsque vous chargez des données via un appel ajax ou ajouter beaucoup de lignes dans un fichier javascript déjà chargé, ce qui n'est pas une bonne chose non plus. Sûrement il doit y avoir une certaine distinction quant à l'endroit où vous devriez utiliser l'un ou l'autre ...?

Je ne suis pas intéressé seulement la différence de vitesse (fichier de paiement ajax obtenais est bien sûr plus lent), mais aussi dans d'autres aspects tels que ce qui est généralement utilisé quand et ce qui doit être utilisé dans certains cas ...

Répondre

2

Le premier est un raccourci pour:

$.ajax({ 
    dataType: "json", 
    url: url, 
    data: data, 
    success: success 
}); 

Ceci est une requête Ajax qui prendra plus de temps que d'avoir un objet simple JSON dans le fichier. Je préférerais le second SI c'est possible. Aussi, si vous participez à de bonnes performances, le premier est plus long.

temps (Chargement + analyse syntaxique 2 fichiers) >> temps (Lire un objet Javascript)

+0

Nous vous remercions de votre réponse. Je sais que le premier est un appel ajax seulement ... Mais quand même: avoir 150 lignes de json définies en javascript n'est pas une solution vraiment sympa et claire non plus, ou est-ce? – trainoasis

+0

Ce n'est pas un problème. Et vous pouvez l'écrire sur une seule ligne. Ce que je ferais: utiliser coffeescript et utiliser un script de collage qui ajoutera le contenu d'un fichier à l'autre. – Kursion

1

Si vos données est connue au moment de la création de la page que vous êtes sans doute préférable d'utiliser un objet littéral comme:

var myJson = {...} 

Cependant, comme mentionne Kursion,

$.getJSON(...) 

est une méthode abrégée pour récupérer des données de manière asynchrone via JSON Ajax. Vous l'utiliseriez si vous souhaitez récupérer des données du serveur qui n'étaient pas connues au moment du chargement de la page ...

Par exemple, si un utilisateur entre un terme de recherche dans un contrôle de saisie, vous souhaiterez peut-être pour récupérer JSON en réponse à cela sans effectuer une mise à jour entière de la page. Vous ne pouviez pas simplement définir un objet javascript à l'avance, car vous ne saviez pas quel était le terme de recherche à l'avance.