C# Web 服务不会输出 JSON,只会输出 XML
Posted
技术标签:
【中文标题】C# Web 服务不会输出 JSON,只会输出 XML【英文标题】:C# Web Service won't output JSON, only 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 这样的开源库或类似的东西。
感谢您的帮助!
【问题讨论】:
我是 *** 的新手,所以我不知道这条评论会如何参考其他评论,但是......如果我的数据类型只是“json”,那么内容仍然是 XML 和 jQuery不会调用我的回调函数。如果我添加“&callback=?”到 url,IIS 抛出 HTTP 500 错误。 @TheDude - 您可以编辑原始问题以添加此信息。问题部分左下角的标签下有一个编辑链接 如果可以使用 WCF REST Starter Kit,刚刚发布了 Preview 2 【参考方案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 文章。还有一些关于常见陷阱的有用信息。
【讨论】:
以上是关于C# Web 服务不会输出 JSON,只会输出 XML的主要内容,如果未能解决你的问题,请参考以下文章
使用 c# --> asp.net web api 在 json 中获取分层输出
从 ASP.Net Web 服务 json 输出中删除“d”对象