2011-08-12 16 views
2

私は少し混乱しています。 XHTML +のいくつかの特別な属性(<!ATTLIST>で設定)を使用しているため、自分のサーバー上でcontent-typeをapplication/xhtml + xmlに切り替えました。私がこれをして以来、すべての地獄は緩んだ。
たとえば、私のサーバーからデータを読み込むオートコンプリートボックスがあります。 AJAXリクエストが行われたときのサーバーからの応答はapplication/jsonのcontent-typeのものです。後者にアンパサンドが含まれている場合、私のブラウザはAn invalid or illegal string was specified" code: "12を叫びます。私のページのcontent-typeをtext/htmlに復元すると、エラーはまったくありません。アンパサンドはXHTMLではHTMLとは異なって表現されていますが、応答のコンテンツタイプはapplication/jsonだから、なぜjQueryはxhtmlとして解析するのですか?
私は私のコード全体で(他のすべてのjQuery/javascript関連の)他の同様のエラーがあります。jQuery XHTML準拠

これらのエラーを回避するには、何が必要ですか?

+0

アンパサンドは、HTMLとXHTMLでは別々に表現されません。両方で '&'です。 – You

+0

@あなた - それはまったく真実ではありません。アンパサンドは、テキスト・エンコーディング・スキームに応じて、そのままHTMLで送信できます。 XHTMLには特別な意味があるので、一般的にはCDATAブロックまたはエンティティエンコードされたものに囲まなければなりません。 –

+0

アンパサンドはそのままでは送信できません。アンパサンドはデコード後にアンパサンドになるため、テキストエンコードは関連性がありません。 pcdataでは、CDATAを使用するか、&を使用して引用することができます(属性では、&しか使用できません)。 –

答えて

1

おそらくjqueryはJSONとして送信されたデータを使用しており、innerHTMLなどを使用してDOMに挿入しています。 XMLとして提供されるページでは、innerHTMLによって提供されるデータもXMLに準拠している必要があります。

+0

これはかなり意味があります。これはおそらく私のコードが他の場所でも失敗している理由ですが、jQueryでこれを変更するにはどうすればよいですか? XHTML/XMLに準拠したjQueryのバージョンはありますか? – Aviv

+0

これはまた、私のjQueryプラグインで多くの問題を引き起こしています。彼らはxhtmlビジネスで動作していません..私はこれを修正するために離れているのですか? – Aviv

+0

@Aviv - 残念なことに一般的な解決策はありません。プラグインの作成者が多すぎると、application/xhtml + xmlは考慮されません。唯一のアプローチは、(a)text/htmlに切り替えるか、(b)XMLを使用してアプリケーション全体を検索し、application/xhtml + xml互換のプラグインを探したり、独自のJavaScriptを記述したりすることです。 – Alohci