2009-05-14 7 views
5

Essayer de se conformer à la suggestion de StackOverflow de poser une question, de ne pas créer une discussion, considérons ces deux méthodes qui utilisent le HTTPAsyncRquest de mettre à jour une page Web sans rafraîchissant:Ajax: Building HTML vs injection HTML

1 Les données retournées par AsyncRequest sont analysées/interprétées afin de générer le code HTML résultant qui met à jour la page par exemple JSON :: parseAndExecute (returnsData); // Juste un exemple

2) Les données retournées par AsyncRequest sont du jScript brut qui est exécuté et met à jour la page. par exemple. plaine ancienne: eval (returnsData); // nous SAVONS returnData n'est pas un code malveillant

Pour écarter les problèmes académiques/préférences, supposons que nous utilisons exactement le même cadre pour programmer le serveur et le client, à la seule différence qu'il y a une option/un drapeau à faire il crache un JSON ou jscript brut.

Dans ce scénario, y a-t-il des raisons techniques à préférer? Je demande cela parce que JSCRIPT brut devrait être, dans la plupart des cas, plus rapide et plus flexible, mais la plupart des frameworks que j'ai trouvés ne retournent pas JSCRIPT, mais plutôt des données qui sont interprétées à leur tour par JSCRIPT.

(Juste pour préciser: Je demande est plus petit plus rapide sont là les risques de sécurité des risques de compatibilité??)

Première à stackoverflow, vous!

+0

Première mise en garde pour vous, vous! Bonne question. :-) – Cerebrus

Répondre

1

Votre deuxième solution serait généralement plus rapide, plus facile à implémenter et utiliserait moins de bande passante. Et si vous contrôlez à la fois le côté serveur et le côté client, par exemple un Ajax Framework, alors la sécurité n'est pas un problème. Donc, votre seul problème est que vous finissez avec un (mal) eval. Ce que vous devez avoir TOUJOURS puisque, sauf pour IE8, il n'y a aucun moyen d '"analyser" JSON sans avoir au moins un eval dans votre code.

Nous sommes (Ra-Ajax) en utilisant une combinaison de JSON et HTML (innerHTML pour toutes les questions pratiques) pour notre moteur Ajax. Nous utilisons JSON pour modifier les propriétés et les attributs de nos widgets, alors que nous utilisons innerHTML pour le rendu initial (ou les mises à jour complètes) sur les widgets.

+0

Firefox 3 est livré avec un analyseur JSON. –

1

@Thomas Hansen:

plus rapide et plus facile à mettre en œuvre, peut-être. Mais je ne vois pas pourquoi il utiliserait moins de bande passante. Le code Javascript chargé avec les pages est mis en cache afin que le code d'analyse syntaxique et de construction de widget ne soit téléchargé qu'une seule fois, le contenu dynamique est simplement du JSON pur.

Vous pouvez également préférer la première option (JSON) car vous transformez/filtrez les données en réponse à d'autres rappels de l'interface graphique, et vous ne voulez pas vous fier au serveur pour cela.

+0

Eh bien, la plupart des gens quand on parle d '"analyse" finit généralement par faire XML - ce qui est évidemment WAY plus grand que JSON ... –

+0

C'est certainement vrai. La taxe d'angle ne ferait qu'ajouter beaucoup de frais généraux à presque toutes les demandes de réseau –