【问题标题】:Does asp.net webmethod always return jsonified data?asp.net webmethod 是否总是返回 jsonified 数据?
【发布时间】:2011-03-17 21:08:00
【问题描述】:

我有一个普遍的问题,如果 asp.net webmethod 总是以“json”形式返回数据。如果不是,webmethod 的默认返回数据类型是什么?

我想知道是否有一种方法可以从“HTML”而不是“json”中的网络方法获取数据?

谢谢

【问题讨论】:

    标签: asp.net webmethod


    【解决方案1】:

    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 服务的不错的文章。

    【讨论】:

    • 抱歉延迟回复,非常感谢您将我推荐给这篇文章。据我了解,页面方法将给出 xml 或 Json 响应,而不是其他任何内容。请纠正我如果我错了?
    • 你的正确。我在内部消费时总是使用 JSON,因为大部分时间我将在 jquery/ajax 中使用 Web 服务。在创建外部 API/Web 服务时,除了 JSON 之外,我唯一会使用 XML。
    【解决方案2】:

    默认 web 服务的返回类型应该是 SOAP(一种 XML 格式),对于 WCF,有一个 REST 包可以将其返回类型更改为 JSON

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

    希望这会有所帮助。

    【讨论】:

    • 谢谢。实际上我没有使用 webservices。但是我在我的 asp.net 代码隐藏页面中编写了一个 webmethod,我总是在 json 中看到响应。你能解释一下为什么吗?以及如何获取“HTML”而不是“json”?
    • 你能提供一个代码示例吗?您可能还想在页面指令中添加内容类型
    • 例如我有以下方法 [WebMethod] public static string sayHello() { return "hello";我使用 scriptmanager 和 PageMethods.sayHello 组合调用此方法,在 firebug 中我看到响应为 {"d":"hello"}。我还尝试将页面指令 ContentType 设置为 'text/html' 并且仍然得到了相同的 json 响应。
    • @kranthi - 检查我上面的答案。仅供参考 - PageMethods 仍然是 Web 服务,它们只是被称为在您的 javascript/ajax 中调用“页面中的方法”的感觉,而实际上您正在执行启用 ASP.NET AJAX 的 Web 服务(在服务器)。
    猜你喜欢
    • 1970-01-01
    • 2012-07-11
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多