2010-07-19 49 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