2009-12-08 6 views
0

En bref: En utilisant jquery, je veux obtenir une sortie xml et l'utiliser avec un plugin de grille personnalisé. Mon problème est d'obtenir efficacement les données dont j'ai besoin dans le plugin.JQuery - Utilisation des résultats post/ajax dans plusieurs fonctions

Ce plugin doit obtenir le nombre de nœuds retournés et les lignes elles-mêmes. Actuellement je fais 2 appels séparés pour obtenir le xml, on l'obtient et compte les nœuds et renvoie ce nombre au plugin, on le fait encore trier les données lui-même et les passe au plugin pour le formatage et l'affichage.

Ainsi, la configuration du plugin ressemble à quelque chose comme ceci:

$("someID").thePlugin({count:countFunction, rows:loadRowsFunction}); 

où countFunction obtient le fichier xml et compte les noeuds et loadRowsFunction obtient également le fichier xml et charge les données. Je veux obtenir le fichier xml une fois. Quelle est la meilleure manière de s'occuper de ça?

Répondre

4

Le choix logique serait de séparer la fonctionnalité. Cela va de pair avec le principe de codage "DRY" (Ne vous répétez pas).

Supprimez la portion de récupération XML de votre fonction count et de la fonction loadRows et placez-la dans sa propre fonction, par exemple, xmlFetch().

Maintenant, faites xmlFetch() avoir un mécanisme de mise en cache. Par défaut, il récupère le contenu la première fois qu'il est appelé et le stocke en mémoire. Si une autre requête vient à xmlFetch(), elle renvoie simplement les données déjà récupérées. Vous pouvez rendre facultatif le remplacement du mécanisme de mise en cache si vous souhaitez effectuer une nouvelle extraction des données. Maintenant, votre fonction count et loadRows peuvent à la fois appeler xmlFetch() et ne récupéreront les résultats qu'une seule fois, à moins qu'on ne leur dise spécifiquement de re-chercher.

+0

J'essayais d'expliquer la même chose mais j'ai pris trop de temps. +1 –

Questions connexes