ASP.NET Web服务错误地返回XML而不是JSON
我正在尝试使用jQuery从javascript使用ASMX Web服务。当我要求XML时它工作正常,但我想利用.net的JSON序列化功能; (它也开始让我觉得这不起作用)
Web服务的代码:
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;
[WebService()]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class SimpleService : WebService
{
[WebMethod]
public String GetString()
{
return "value";
}
}
客户代码:
$.ajax({
type: "POST",
url: "SimpleService.asmx/GetString",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json"
});
而且回应......
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
<?xml version="1.0" encoding="utf-8"?><string xmlns="http://tempuri.org/">value</string>
请求总是成功,但jQuery给了我一个解析器错误(不出意料,给出响应)。
我的智慧结束了。我尝试添加一个ServiceType设置为JSON的ServiceMethod属性,但似乎没有任何效果。
我也不想使用.NET ScriptManager javascript生成器,所以请不要建议使用它们。
没有找到相关结果
已邀请:
3 个回复
脖呐
标头并使用XML进行响应。 查看本文标题为“JSON,对象和字符串:哦,我的!”。 在这里我引用: $就({ 类型:“POST”, url:“WebService.asmx / WebMethodName”, 数据:{'fname':'dave','lname':'ward'}, contentType:“application / json; charset = utf-8”, dataType:“json” }); 因为该数据参数是有效的对象文字,所以以这种方式调用Web服务不会在客户端抛出任何JavaScript错误。不幸的是,它也不会有所期望的结果。
这显然不是我们想要发生的事情。解决方案是确保您为数据参数传递jQuery字符串,如下所示: $就({ 类型:“POST”, url:“WebService.asmx / WebMethodName”, 数据:“{'fname':'dave','lname':'ward'}”, contentType:“application / json; charset = utf-8”, dataType:“json” }); 这是语法上的一个小变化,但却有所不同。现在,jQuery将单独留下我们的JSON对象,并将整个字符串传递给ASP.NET,以便在服务器端进行解析。 在我的情况下,data参数是一个大对象,所以我使用类似的东西将它序列化为JSON manualy。
从jQuery查询时让ASP.NET ScriptService返回JSON是非常棘手的,代码中的许多参数可以使它抛出XML而不是JSON。你应该阅读各种SO Q / A以让自己满意。 相关文章构成同一作者,可能会给予更多指导。
舶啥戚
浮凰量
属性添加到方法中: