【问题标题】:C# Web Service won't output JSON, only XMLC# Web 服务不会输出 JSON,只会输出 XML
【发布时间】:2010-10-14 09:49:02
【问题描述】:

我正在尝试将 jQuery 和 JSON 与我编写的 C# Web 服务一起使用。无论如何,下面的代码只会以 XML 格式输出。

网络服务代码

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string HelloWorld() {
    return "Hello World!";
}

我也有这些属性分配给类

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]

jQuery 代码

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "ScheduleComputerDS.asmx/HelloWorld",
    data: "{}",
    dataType: "jsonp",
    success: function(data) {
        alert(data);
    }
});

ASMX 页面始终以内容类型“text/xml”的形式返回。我有什么遗漏吗?

编辑:回应几个答案:

如果我的数据类型只是“json”,内容仍然是 XML,jQuery 也不会调用我的回调函数。如果我添加“&callback=?”到 url,IIS 会抛出 HTTP 500 错误。

我的课程确实继承自“System.Web.Services.WebService”。

通过对你们的答案进行一些研究,看来我确实需要弄乱 WCF。不幸的是,返回的 JSON 更多是为 MS Ajax 设计的,对我来说是很多无用的膨胀。我可能会研究像 Jayrock 这样的开源库或类似的东西。

感谢您的帮助!

【问题讨论】:

  • 我是 Stackoverflow 的新手,所以我不知道这条评论会如何参考其他评论,但是......如果我的数据类型只是“json”,那么内容仍然是 XML 和 jQuery不会调用我的回调函数。如果我添加“&callback=?”到 url,IIS 抛出 HTTP 500 错误。
  • @TheDude - 您可以编辑原始问题以添加此信息。问题部分左下角的标签下有一个编辑链接
  • 如果可以使用 WCF REST Starter Kit,刚刚发布了 Preview 2

标签: c# jquery web-services json


【解决方案1】:

我认为有一个错字:

dataType: "jsonp",

应该是:

dataType: "json",

【讨论】:

  • awesome :) 我最近犯了这个错误,但我在那里有“脚本”。是从示例中复制和粘贴的
  • 我知道这是一个旧帖子,我只是想确保每个新人都不会走错路,它的jsonp 没有错字,请检查json-p.org
  • @LuisSánchez: jsonp 不推荐。留下它json。直接从您提供的链接中:“依赖 JSON-P 进行跨域 Ajax 的作者实际上正在向潜在的混乱敞开大门,就像通过在第一名”
【解决方案2】:

据我所知,ScriptService 属性只允许服务自动创建 JavaScript 代理(通过将 /js 附加到端点地址 - 在您的情况下为 ScheduleComputerDS.asmx/js)。它不允许您以您尝试的方式调用服务上的操作。

您可以改为使用 RESTful WCF 服务(需要 .NET 3.5),您可以通过 HTTP GET 发送适当形状的 URI 来访问该服务。

【讨论】:

    【解决方案3】:

    Rich Strahl 有一篇非常基础的帖子可以帮助您解决这个问题。

    http://www.west-wind.com/weblog/posts/164419.aspx

    【讨论】:

    • 这个链接很有帮助。谢谢
    【解决方案4】:

    您是否尝试过使用数据类型json

    另外,请查看 Encosia 关于此事的 Using jQuery to Consume ASP.NET JSON Web Services 文章。还有一些关于常见陷阱的有用信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多