2010-07-19 46 views
4

我有一個普遍的問題,如果一個asp.net webmethod總是以'json'的形式返回數據。如果不是webmethod的默認返回數據類型是什麼?asp.net webmethod是否總是返回jsonified數據?

我想知道是否有方法可以從'HTML'而不是'json'的webmethod獲取數據?

感謝

回答

2

PageMethods是ASP.NET AJAX框架(ScriptManager)的一部分。

默認情況下,ASP.NET AJAX使用JSON而不是SOAP。

這是通過設計,主要是因爲ASP.NET AJAX Javascript庫被優化以與JSON對象一起工作。

您可以通過在Web方法中指定[ResponseFormat]屬性來覆蓋此默認值。

像這樣:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)] 
public XmlElement GetFoo(string url) 
{ 

Here是PageMethods和支持ASP.NET AJAX的Web服務像樣的文章。

+1

對不起,延遲迴復,並非常感謝你向我推薦這篇文章。根據我的理解,頁面方法將給出一個XML或JSON響應,而不是其他任何東西。請糾正我,如果我錯了? – kranthi 2010-07-30 08:07:13

+0

您的正確。我在內部使用時總是使用JSON,因爲大部分時間我都會在jQuery/ajax中使用Web服務。在創建外部API/Web服務時,我唯一使用XML的方式是除了JSON。 – RPM1984 2010-07-30 08:44:49

0

的返回類型默認WebService應SOAP(XML格式),爲WCF有一個REST電池,它可改變其返回類型爲JSON

[http://msdn.microsoft.com/en-us/netframework/cc950529.aspx][1]

希望這有助於。

+0

Thanks.actually我沒有使用webservices.but但我在我的asp.net代碼隱藏頁面上寫了一個webmethod,我總是看到json中的響應。請你解釋爲什麼?以及如何獲得'HTML'而不是'json'? – kranthi 2010-07-19 12:14:01

+0

你可以一個代碼示例?例如我有以下方法[WebMethod] public static string sayHello() { {0}回到頂端|提供反饋更多信息返回「hello」;您可能希望在頁面指令 – Iain 2010-07-19 17:50:09

+0

上添加內容類型。 }我使用scriptmanager和PageMethods.sayHello組合來調用這個方法,並且在firebug中我看到響應爲{「d」:「hello」}。我也嘗試將page指令設置爲'text/html'並仍然得到了相同的JSON響應。 – kranthi 2010-07-19 21:05:24