C#Web Service不会输出JSON,只输出XML

时间:2009-03-19 19:54:57

标签: c# jquery web-services json

我正在尝试将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这样的开源库或类似的东西。

感谢您的帮助!

4 个答案:

答案 0 :(得分:6)

我认为这是一个错字:

dataType: "jsonp",

应该是:

dataType: "json",

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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

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