2011-09-29 66 views
0

我有一個在ASP.NET webforms中輸出HTML的頁面。jQuery - 獲取頁面的HTML內容並刪除表單元素

我通過發出請求到這個網頁:

$(document).ready(function() { 
      $.get("Preview.aspx?ID=1", function (data) { 
       alert("Data Loaded: " + data); 
      }); 
     }); 

的問題是,preview.aspx頁面返回HTML,其表單元素。我想用一無所有替換這些表單元素。

如何從上面的數據對象中刪除所有表單元素?

編輯:只是要清楚,我需要保持所有的HTML到位,只替換表單元素。

編輯2:對不起,我應該更清楚。這是一個HTML通訊。基本上這個頁面是純HTML,但是作爲web表單(yuck),所有的表單都是mumbo jumbo。我想獲取沒有表單元素的這個頁面的內容。到目前爲止,下面的想法是行不通的。 .load可以工作,但是當我添加:not('form')時,HTML格式不正確。 get var elem = $(data).find('form')。html();即使表單確實存在,當我執行警報(數據)時,也會返回null。

+0

是否要刪除整個表格或僅輸入? –

+0

我需要刪除任何表單元素,並保留HTML的其餘部分 – izip

+0

如果Preview.aspx是活的,你能拋出一個顯示不正確行爲的小提琴嗎? http://jsfiddle.net – jammypeach

回答

2

您可能會更好使用jQuery的.load方法。這樣,您可以使用任何jQuery選擇器從外部頁面選擇一個片段。

如果包裝所有從Preview.aspx在<div id="whatever">標籤的相關信息,您可以只提取與

$('<div/>').load('Preview.aspx?ID=1 #whatever', function() { 
    var preview = $(this).html(); 
}); 

- 其中有忽略所有的HTML /頭/身體的好處/等等。該文件中的標籤。

你也可以這樣使用它,它會得到一切不是forminput標籤,但可能會讓表單中的其他東西通過。根據需要仔細使用和修改:

$('<div/>').load('Preview.aspx?ID=1 :not("form"):not("input")', function() { 
    var preview = $(this).html(); 
}); 
+0

只是我的tuppence - 我使用.load(),直到不久之前,在這一點上,我切換到使用.get()和.post()的原因有很多,但仍然需要獲取並解析返回的html - $(data)爲我工作,但也允許我使用更靈活的get和post方法。只是指出.load()幾乎不像其他可用的ajax方法那麼靈活 - 例如,您不能像對其他人那樣放棄load()請求。 – jammypeach

+0

@jammypeach:是的,我在別處注意到使用'$ .ajax()'而不是jQuery的各種簡寫方法的一個關鍵優勢是它更加冗長,可以讓您添加如錯誤回調這樣有用的基本要素。 – Blazemonger

+0

當然這並不會減損你的(正確)答案:) – jammypeach

相關問題