2009-06-11 16 views
2

私はjqueryとある程度のjavascriptプログラミングを使い慣れています。私は正常に私のajax呼び出しのjqueryを使用し始めたが、私は困惑しています、これは初心者の質問ですが、ここに行くと確信しています。jquery、ajaxと完全なhtml構造体を取得する

私はajaxの呼び出しで完全なhtml構造体を、テーブル構造体のポイントに戻そうとしています。しかし、何が起こって続けることはjqueryのは、離れてhtmlタグを取り除き、唯一の「テキスト」の最も深いレベルを挿入したり<>、などなどの特殊文字をエスケープするもの

に置き換えますどちらか私は有効にする方法を知っておく必要があるということです受信した文字のこの処理をオフにする。 Firebugを使用すると、私のウェブサーバからの応答が正しく出てきますが、ユーザが受信したjqueryで処理されたページは正しくありません。簡単な例が私の言うことです。

私はページのソースビューをすれば、私のページ上に表示するもの。この

<results><table id="test"><tr>test</tr></table></results> 

のようなものを送っていますが、このです。

&lt;results&gt;&lt;table.... 

このように、特殊文字が変換されているのがわかりますし、停止方法もわかりません。

<results></results>はxmlタグで、そのタグのテキストは自分のページの既存の<div>に配置されるものと考えられます。ここで

は、私は、応答および挿入をプルダウンするために使用していjavasciptです:

$.post(url, params, function(data) 
{ 
    $('#queryresultsblock').text(data) 
}, "html"); 

私は「HTML」のように、「XML」、「テキスト」など以外のさまざまなオプションを試してみました彼らはいろいろなことをやっていますが、 "html"はこれまでのところ私に一番近いものです。

ありがとうございます。

tim

+1

。あなたはあなたが本当に見ていることを示すためにそれを修正できますか? –

+0

@timashman:実際にレスポンスをプルダウンしてページに挿入するコードがありません...それはちょっと大切です:あなたは何を使っていますか? – Shog9

+0

@ shog9:ここに私が応答と挿入をプルダウンするために使用しているjavasciptがあります。 $ .post(url、params、function(data){$( '#queryresultsblock')。text(data)}、 "html"); "xml"、 "text"などのような "html"以外のさまざまなオプションを試しました。それらはすべてさまざまなことを行います。 –

答えて

2

最も簡単な方法は、生のHTMLを返し、jQueryのhtmlメソッドを使用することです。

あなたの結果:

<table id="test"><tr>test</tr></table> 

JavaScriptの呼び出し:

$.post(url, params, function(data){ $('#queryresultsblock').html(data) }) 

少ない制御のもう一つの解決策 - - あなたが唯一のGET要求を行うことができますが、単純にloadを使用することです

$("#queryresultsblock").load(url); 

あなたはresults XMLタグであなたの結果を返さなければならない場合、あなたはloadコールにjQueryのセレクタを追加してみてくださいすることができます

StackOverflowの結果のあなたの第2のセットを誤解のように見えます
$("#queryresultsblock").load(url + " #test"); 
+0

ありがとうございます。これはそれでした。私はそれが私のjquery知識の欠如でなければならないことを知っていた。 –

+0

あまり気分が悪くない:$ .textページのマイナーノート。 "[$ .text]は、HTMLで正しくレンダリングされるように、必要に応じて提供される文字列をエスケープすることに注意する必要があります。そのために、DOMメソッド.createTextNode()を呼び出します。 HTMLエンティティに相当するもの(例えば、< <)** .html()は実際に.innerHTMLを使ってDOMに戻します – Benno

1

エスケープされていないHTMLをXMLの中に入れることはできません。私が行く良い方法と見える2つの選択肢があります。

1つの方法は、XMLでエスケープされたHTMLを送信してから、クライアント側のJavaScriptでHTMLをエスケープすることです。だから、

<results>&lt;results&gt;&lt;table.... 

を送信しますとJavaScript <と、このようなに&lt;を変換します。

もう1つの選択肢は、XMLの代わりにJSONを使用することです。

{'results': "<table id="test"><tr>test</tr></table>" } 

JavaScriptは文字列としてそのHTMLの構造を抽出し、エスケープまたはアンエスケープの任意の並べ替えなしであなたのページに直接挿入することができるはずです。

+0

実際には、エスケープされていないタグをCDATAのXMLに配置することができます。 http://www.w3schools.com/XML/xml_cdata.asp –

+0

ありがとう、ありがとうございます。私のjavascriptの戻り値関数をalert(data)で置き換えると、正しいテキストがそこにあります ...これは、入力を処理する際にjqueryがこの変換を行っていることです。強制的に使用する方法がありますこのテキストを受け入れるだけのjqueryのプロセス –

0

もう1つのことは、HTMLコードスニペットだけで外部の.htmlファイルを作成することです。したがって、include.htmlを

で作成します。
<results><table id="test"><tr>test</tr></table></results> 

内容として、jquery.load関数を使用してページに取得します。それは実際にはhereです。

関連する問題