我知道我不是第一个有这个问题的人,但我似乎找不到解决办法。
当使用webservice集返回json时,.net仍然将其包装在XML包装器中。
我搜索并尝试了很多东西
,
正在发生的事情非常令人困惑,在IE中,至少在我的devbox中,响应返回为一个xml文档,在这里,我可以使用msg.text轻松获得json字符串,但是在生产过程中,我在FF中进行了测试,它作为文档返回,没有"text“属性。
这是我的javascript/jquery
$.ajax({
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status+'-'+xhr.statusText);
alert(thrownError);
},
url: '<%=ResolveUrl("~/WebService.asmx")%>' + "/JackJill",
contentType: "application/json",
success: function (msg) {
alert(msg.d);
}
});因此:我如何简单地要求.net返回一个有效的常规json字符串,而不是包装它。我相信这会解决所有的问题。它还将使整个世界更容易访问我的服务,因此他们不需要进行任何特殊的解析。
非常感谢您的建议和建议。
由衷地
编辑:这里是我刚刚测试过的一个示例EDIT服务:
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> <WebMethod()> Public Function JackJill() As String
Return "[{""Name"":""Jack""},{""Name"":""Jill""}]"
End Function然后当我把这个放进浏览器
http://localhost:81/webservice.asmx/JackJill
我得到了
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://tempuri.org/">
[{"Name":"Jack"},{"Name":"Jill"}]
</string> 为什么这里有这么多xml的东西?
发布于 2011-06-17 12:04:51
我知道这个问题已经很老了,但万一将来有人在看这个答案.
我发现(根据这个http://encosia.com/asmx-and-json-common-mistakes-and-misconceptions/和这个http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0-mitigates-these-attacks.aspx),如果您想从.ASMX中使用JSON,那么有必要:
在上面,Yisman说他不想将他的服务限制在发布请求上,但是(根据这两个引用),如果您希望使用.ASMX并接收JSON,这就是您必须做的事情。
发布于 2012-05-04 14:45:43
我意识到这有点老了,但是我也在思考这个问题,即使输出类型被指定为Json,它仍然是用XML包装的。对于我来说,上面的解决方案的问题是,我需要一个GET来调用它。
不使用web服务的解决方案为我做了这项工作。我所做的就是创建另一个aspx页面并将其添加到我的项目中,在aspx页面中构建json对象并执行以下操作(全部在Page_Load方法中):
Response.ContentType = "application/json";
Response.Write(JsonObject.ToString());
Response.End();然后从客户端调用“页面”,只需使用URL例如。"http://aspjsonpage.aspx?parameter=value“
你得到了你需要的Json。
发布于 2012-06-28 08:22:00
嗨,我在使用webservice集返回json时遇到了同样的问题,.net仍然将其包装在XML包装中。我的老师告诉我正确的答案,那就是重新编写.NET框架4.0,所有的问题都解决了。何塞比斯!
https://stackoverflow.com/questions/5611134
复制相似问题