2010-10-12 55 views
0

我試圖使用jQuery .load()從一個ASMX web服務獲得直接的html:如何從ASMX Web服務調用得到乾淨的/純HTML

$( '#目標')負載(」 MyService.asmx/GetHtml');

在.NET代碼,GetHtml()返回作爲字符串:

[WebMethod(EnableSession = false)] 
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Xml)] 
    public string GetHtml() 
    { 
     return "<span>Hi</span>"; 
    } 

返回:

<?xml version="1.0" encoding="utf-8"?> 
<string xmlns="http://tempuri.org/">&lt;span&gt;Hi&lt;/span&gt;</string> 

注意,串進行編碼。使用該編碼,$ .load不起作用。顯示的文本實際上顯示了標籤。

如何才能讓WebMethod調用返回這個?

<span>Hi</span> 

回答

4

我敢肯定,如果你想直接從服務返回HTML,你需要使用處理程序(.ashx)而不是.asmx。我不知道如何讓.asmx不以某種格式編碼數據(儘管您可以更改該格式)。

這就是說,@Randolpho也有一個好點。

6

如何:

而不是從服務拉動的HTML,拉數據,然後使用jQuery這些數據插入到DOM。

然後,您將不必XML解碼您的HTML。

+0

我不認爲我會想到這一點。謝謝。我打算使用@ Andrew的建議,因爲它允許我使用簡單的.load()調用。 – slolife 2010-10-13 16:35:08

0

最簡單的方法是根本不使用Web服務。帶有包含HTML的響應的HTTP請求基本上是在網絡上發生的最常見的操作,因此默認工具旨在執行此操作。在asp.net的情況下,這將是一個aspx文件。

1

簡短的回答(正如其他海報所建議的)是:不要這樣做。返回JSON並使用JS將其製作成所需的HTML。 See this discussion瞭解更多詳情/評論。但是,如果你別無選擇,只能返回HTML(也許你的項目經理/架構師害怕真正的web服務設計,出於某種原因),我同意Jake T的答案:使用ajax來調用ASPX頁面。

ASPX的整個生活目標是返回HTML(與ASMX或ASHX不同)。最重要的是,寫得很好的ASPX將HTML與邏輯/代碼隱藏分開。這樣,當您需要將HTML從列表更改爲表(或其他)時,您可以在不重新編譯,重新測試和重新部署整個系統的情況下執行此操作! :)

+0

我的目標是在javascript內不創建大量的HTML。使設計和產生真正的痛苦。我正在做的是創建一些ASCX用戶控件,在請求時創建特定的HTML。我使用一些代碼將用戶控件呈現爲一個字符串並返回。 Per @ Andrew的建議是,我使用的是處理程序而不是web服務。我已經走下了使用web服務的路徑,只返回數據到瀏覽器,並使用javascript來循環這些數據來克隆和創建html。 – slolife 2010-10-13 16:52:43