2011-08-12 2 views
2

Je suis un peu confus. J'ai basculé mon type de contenu sur application/xhtml + xml sur mon serveur car j'utilise XHTML + quelques attributs supplémentaires (avec <!ATTLIST>). Depuis que je l'ai fait, tout l'enfer s'est déchaîné.
Par exemple, j'ai une boîte de saisie semi-automatique qui charge les données de mon serveur. La réponse du serveur lorsqu'une requête AJAX est faite est du type de contenu application/json. Lorsque ce dernier contient une esperluette, mon navigateur crie An invalid or illegal string was specified" code: "12. Lorsque je restaure le type de contenu de ma page en text/html, aucune erreur. Je comprends qu'une esperluette est représentée différemment en XHTML qu'en HTML, mais le type de contenu de la réponse est application/json, alors pourquoi jQuery essaie-t-il de l'analyser en xhtml?
J'ai d'autres erreurs similaires dans tout mon code (tous les jQuery/javascript liés).jQuery XHTML Compliance

Que dois-je faire pour éviter ces erreurs?

+0

Une esperluette n'est pas représentée différemment dans HTML et XHTML - c'est '&' dans les deux. – You

+0

@You - Ce n'est pas vrai du tout. Une esperluette peut être envoyée telle quelle en HTML, en fonction du schéma d'encodage de votre texte. En XHTML, il a une signification particulière, il doit donc généralement être enveloppé dans un bloc CDATA ou une entité codée. –

+0

Une esperluette ne peut pas être envoyée telle quelle, l'encodage de texte n'a aucune pertinence car une perluète ne devient une esperluette qu'après le décodage. Dans pcdata, vous pouvez le citer en utilisant CDATA, ou en utilisant & (et dans les attributs, vous ne pouvez utiliser que &). –

Répondre

1

Eventuellement jquery utilise les données envoyées en JSON et injectant dans le DOM en utilisant quelque chose comme innerHTML. Une page traitée en XML nécessite que les données fournies par innerHTML soient également conformes à XML.

+0

qui a beaucoup de sens. C'est probablement la raison pour laquelle mon code échoue dans d'autres endroits, mais que dois-je faire pour le changer dans jQuery? existe-t-il une version conforme à XHTML/XML de jQuery? – Aviv

+0

cela cause aussi beaucoup de problèmes avec mes plugins jQuery. ils ne travaillent pas avec l'entreprise xhtml .. est là pour moi de résoudre ce problème? – Aviv

+0

@Aviv - Il n'y a malheureusement pas de solution générale. Trop d'auteurs de plug-ins ne prennent pas en compte application/xhtml + xml. Les seules approches consistent à (a) revenir à text/html ou (b) parcourir tout le hog avec XML et rechercher des plug-ins compatibles avec l'application/xhtml + xml ou écrire votre propre JavaScript. – Alohci