2009-06-11 91 views
2

我是新來的jQuery和一定程度上的JavaScript編程。我已經成功地開始使用jQuery爲我的ajax調用,但我很難過,我敢肯定這是一個新手問題,但這裏。jquery,ajax和獲得完整的html結構返回

我想在ajax中調用一個完整的html結構來返回表結構。然而,繼續發生的事情是,jquery要麼剝離html標籤,只插入最深層次的「文本」或像<,>等特殊字符被替換爲逃逸者

我需要知道如何轉向關閉接收到的字符的處理。使用螢火蟲我看到的響應正常從我的網絡服務器,但用戶收到的頁面,因此由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

它看起來像StackOverflow的曲解你的第二個結果集。你能解決它以顯示你真正看到的? – 2009-06-11 19:29:10

+0

@timashman:您錯過了實際將響應拉下並將其插入頁面的代碼......這很重要:您使用的是什麼? – Shog9 2009-06-11 19:30:37

+0

@ shog9:這裏是我用來拉下響應和插入的javascipt。 (url,params,function(data){$('#queryresultsblock')。text(data)},「html」); 我已經嘗試了除「html」之外的各種選項,如「xml」,「text」等。它們都做各種各樣的事情,「html」讓我目前最接近。 – 2009-06-11 19:33:58

回答

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標籤返回你的結果,你可以嘗試添加一個jQuery選擇您load電話:

$("#queryresultsblock").load(url + " #test"); 
1

您不能將非轉義的HTML放入XML中。我認爲有兩種選擇是很好的方法。

一種方法是在XML中發送轉義的HTML,然後在客戶端使用一些JavaScript處理HTML。所以,你會送

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

和JavaScript將在&lt;轉換爲<和這樣的。

其他選項和我要做的是使用JSON而不是XML。

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

中的JavaScript應該能夠提取HTML結構爲一個字符串,然後直接插入到您的網頁沒有任何類型的轉義或轉義的。

0

您可以做的另一件事是創建一個外部.html文件,只需在其中的HTML代碼片段。因此,創建include.html與

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

至於內容,然後使用jQuery的.load函數來獲取到頁面上。請參閱行動here