2010-11-22 10 views
2

jqueryでcdataノードを設定する際に問題があります。 cdataの取得は.text()関数で簡単に行えますが、.text( 'jquery>便利')を使用するとcdataノードは作成されません。jquery set xml cdata

これは私のprocecureです:

<formdata> 
    <field id="title"><![CDATA[Some title]]></field> 
    <field id="description"><![CDATA[Some description]]></field> 
</formdata> 

フィールドは、特殊文字のすべての種類を含めることができるので、私はCDATAノードを使用します。 私は形でこのような 何かをロードするためのXML形式のフォームデータを取得します。 次に、ノードの内容を.text()で取得してデータをフォームにロードします。

ユーザーがフォームを投稿すると、xmlを更新してサーバーに送信するためにstingに変換します。私はフィールドを投稿することができますが、xmlドキュメントに入れるのにはいくつかの理由があります。すべてがうまくいきますが、ユーザーが特殊文字を使って何らかの入力をした場合は動作しません。 これは私は、CDATAにするために使用ノード、しかしの.text()関数は、それを除去する(この例では「descriptioonノード」)

domdoc.find('field[id="description"]').text($("#description").val()); 

ノードの値を設定する方法です。私はこれを試してみましたALO:の.text()は< &にGTが変更されるため

domdoc.find('field[id="description"]').text('<![CDATA[' + $("#description").val() + ']]>'); 

また、これは動作しません。

誰にも解決策がありますか?私のインスピレーションは、<![CDATA[を追加することなく、.....

おかげで、 サイモン

答えて

0

だけ設定テキストを行っています。 CDATAはXMLでテキストをエスケープする方法の1つに過ぎませんが、jQueryがエスケープするので、別のメソッドを使う必要はありません。 &lt;<![CDATA[<]]>とまったく同じです。 XMLアプリケーションの場合、これらは同じです。

+0

ありがとうporneL、 私はそのように理解しようとします。 – simon

+0

あなたに感謝しました。それでも、cdata機能を使うことができないのはちょっと奇妙です。 – simon

+0

例えば、あなたのXMLにHTMLを挿入できるようにするために、これは完全に役立ちません。 <![CDATA [[ここをクリックしてください]。]]> – Spider

3

シンプルなソリューション。 CDataセクションノードを作成し、XMLに追加します。私は運がないJQueryの.text()に苦労しました。これは素晴らしい仕事でした。