我知道我不是第一个遇到这个问题的人,但是我似乎找不到有效的解决方案
使用网络服务集返回json时,.net仍将其包装在XML包装器中。
我搜索并尝试了很多东西
发生的情况非常令人困惑,在IE中,至少在我的devbox上,响应作为xml文档返回,在这里我可以使用msg.text并轻松获取json字符串,但是在生产环境中我在FF中进行了测试,并且返回为文档,没有“文本”属性。
这是我的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字符串,而不是将其包装。我相信这将解决所有问题。这也将使我的服务更容易为全世界所用,因此他们不必进行任何特殊的分析。
非常感谢您的任何建议或指点
真诚地
编辑: 这是我刚刚测试的示例Web服务:
<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东西?
我知道这个问题很旧,但以防万一将来有人在看这个答案。
我已经发现(根据此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之上,他说他不想将其服务限制为POST请求,但是(根据这两个引用)看来,如果您希望使用.ASMX并接收JSON,这就是您必须要做的。
问题内容: 如果未指定以上内容,则在ASP.net Web服务中,默认的响应格式是什么?另外,如果我的网络服务如下: 返回对象列表,如果我将响应格式更改为JSON,则必须将返回类型更改为字符串,那么如何在JavaScript中访问对象? 目前,我在JS中将此网络服务称为: 我注意到的是,即使一切正常,eval语句也永远不会执行,这意味着Web服务始终返回字符串! 所以我的问题是,在Web服务定义端
问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电:
问题内容: 我在使用Ajax时遇到问题。 问题是,在获得ajax响应之前,它会返回cnt。因此它总是返回NULL。 有没有办法使正确的返回响应值? 谢谢! 问题答案: 由于AJAX请求是异步的,因此您的cnt变量将在请求返回并调用成功处理程序之前返回。 我建议重构您的代码以解决此问题。 一种方法是从AJAX请求的成功处理程序中调用调用了GetGrantAmazonItemCnt()的任何函数,此方
我想在下面返回JSON。 {“名字”:“杰基”} 新来的春靴在这里。1天大。有没有合适的方法可以做到这一点?
问题内容: 我创建了一个自定义错误类型来包装错误,以便更轻松地在Golang中进行调试。当有打印错误时它可以工作,但是现在引起了恐慌。 演示版 当我调用一个函数时,它不会返回错误,我仍然应该能够包装该错误。 预期的行为是,如果错误为nil,则应该简单地忽略它,不幸的是,它会做相反的事情。 我希望它能打印出来。而是即使错误为nil也会打印。 问题答案: 正在将err变量与nil进行比较,但实际上它是
问题内容: 有人可以向我解释为什么返回类型 只是返回类型 我不明白为什么地图会映射到一个以上的值。TIA。 问题答案: 它返回具有 相同 名称的控件的所有参数值。 例如: 要么 任何选中/选择的值都将以以下形式出现: 对于表中的多个选择它也很有用: 与…结合