The*_*ude 8 c# jquery json web-services
我正在尝试将jQuery和JSON与我编写的C#Web服务一起使用.无论如何,以下代码只会以XML格式输出.
Web服务代码
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string HelloWorld() {
return "Hello World!";
}
Run Code Online (Sandbox Code Playgroud)
我也将这些属性分配给了这个类
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
Run Code Online (Sandbox Code Playgroud)
jQuery代码
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "ScheduleComputerDS.asmx/HelloWorld",
data: "{}",
dataType: "jsonp",
success: function(data) {
alert(data);
}
});
Run Code Online (Sandbox Code Playgroud)
ASMX页面始终作为内容类型"text/xml"返回.我缺少什么?
编辑:回应几个答案:
如果我的数据类型只是"json",那么内容仍然是XML,jQuery也不会调用我的回调函数.如果我添加"&callback =?" 到URL,IIS抛出HTTP 500错误.
我的类继承自"System.Web.Services.WebService".
通过对你们家伙的答案进行一些研究,看起来我确实需要弄乱WCF.不幸的是,返回的JSON更多是为MS Ajax设计的,对我来说是很多无用的膨胀.我可能会看一下像Jayrock这样的开源库或类似的东西.
感谢你的帮助!
我觉得有一个错字:
dataType: "jsonp",
Run Code Online (Sandbox Code Playgroud)
应该:
dataType: "json",
Run Code Online (Sandbox Code Playgroud)
据我所知, ScriptService 属性只允许服务自动创建 JavaScript 代理(通过将 /js 附加到端点地址 - 在您的情况下为 ScheduleComputerDS.asmx/js )。它不允许您按照您想要的方式调用服务上的操作。
您可以改为使用 RESTful WCF 服务(需要 .NET 3.5),您可以通过 HTTP GET 发送正确形状的 URI 来访问该服务。
| 归档时间: |
|
| 查看次数: |
16346 次 |
| 最近记录: |