2010-11-29 3 views
0

Ma page doit saisir une div spécifique d'une autre page pour l'afficher dans une div de la page en cours. C'est un travail parfait pour $.load, sauf que la source HTML que je tire n'est pas nécessairement bien formée, et semble avoir des erreurs de balise occasionnelles, et IE tout simplement ne l'utilisera pas dans ce cas. Je l'ai donc changé en $.get pour récupérer la source HTML de la page sous forme de chaîne. En passant à $ pour l'analyser comme un DOM a le même problème dans IE comme $.load, donc je ne peux pas le faire. J'ai besoin d'un moyen d'analyser la chaîne HTML pour trouver le contenu de mon div#information, mais pas le reste de la page après son </div>. (PS Mon div#information contient diverses autres div « s et des éléments.)Analyse de la réponse HTML dans jQuery

EDIT: Aussi, si quelqu'un a une solution pour jQuery de $.load ne pas être en mesure d'analyser la réponse HTML dans IE, j'aimerais entendre aussi.

+0

La plupart des navigateurs sont d'accord avec HTML mal formé. Pouvez-vous poster un échantillon que l'IE échoue réellement? – casablanca

+0

C'est une page assez volumineuse, et je ne sais pas exactement où est l'erreur, mais tous les signes indiquent que c'est la cause. Ensuite, je pourrais avoir complètement tort. – pettazz

+0

Publiez le HTML mal formé, c'est quelque chose que jQuery devrait être capable de faire très bien. Le moteur de rendu ne serait pas impliqué dans l'analyse par $ .load ... – Drew

Répondre

1

Si la ressource que vous essayez de charger est sous votre contrôle, votre spécification d'implémentation est mal optimisée. Vous ne voulez pas demander à votre serveur une page entière de contenu lorsque vous n'avez vraiment besoin que d'une petite partie de ce contenu.

Ce que vous voulez faire est d'isoler le contenu que vous voulez, et que le serveur ne renvoie que ce dont vous avez besoin.

En note, puisque vous êtes au courant que vous avez malformé le code HTML, vous devriez probablement prendre la balle et valider votre balisage. Cela vous évitera des problèmes (comme celui-ci) dans le futur. Enfin, si vous ne pouvez vraiment pas optimiser ce processus, je suppose que vous créez une incohérence car un élément du code HTML analysé a le même ID qu'un élément de votre page actuelle. Les ID identiques ne sont pas valides et entraînent de nombreux problèmes JavaScript entre les navigateurs.

+0

Je suis d'accord avec cela, mais malheureusement pas une option. – pettazz

+0

Pourriez-vous expliquer? Il y a toujours un moyen. ;) – Stephen

+0

Ce ne sont pas mes données, donc je le retire d'une page HTML qui existe déjà, car il n'y a pas d'API pour l'obtenir. – pettazz

0

Strictement avec des chaînes, vous pouvez utiliser une expression régulière pour trouver le contenu du tag id="information". Ne jamais l'analyser comme html.

Je vais essayer le paramètre $.load qui accepte un sélecteur html et

$('#results').load('/MySite/Url #Information'); 
+0

Cela a fonctionné pour moi dans tout sauf IE, qui * obtient * la réponse HTML, mais ne peut pas trouver l'information div #, même quand je l'ai réécrit pour le faire plus explicitement avec un $ .get et $ .find – pettazz