我在 Visual Studio 2010 中创建了两个项目,一个是 Web 服务,另一个是 Web 应用程序,我在 Web 服务上有一个方法如下:
`[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "json/getData")]
List<Objects> TestCall();`
运行服务后,我可以愉快地输入 URL 以获取 JSON 响应:
http://localhost:17258/RestService.svc/json/getData
结果是
{"TestCallResult":[{"id":1,"name":"Title"},
{"id":2,"name":"Title"},{"id":3,"name":"Title"},{"id":4,"name":"Title"}]}
但是,在我的 Web 应用程序中,当我尝试进行此 Ajax 调用以获取此响应时,我从调用中获得了成功,但 JSON 为空,这是我的 ajax 调用:
`$.ajax({
url: "http://localhost:17258/RestService.svc/json/getData",
type: "GET",
mimeType: "application/json",
dataType: "json",
cache: false,
success: function (json, status) {
alert("Success JSON=" + json + ", status=" + status);
var obj = jQuery.parseJSON(json);
for (var i = 0; i <= obj.length; i++) {
alert(obj[i].id);
}
}
});`
我在 FireFox 中尝试并且 json 变量返回为 null,在 IE 调试器中进行调试时,我可以向对象添加一个监视,并且可以看到对象下面有数组,我需要使用 json.TestCallResult 代替还是有任何其他人都看到了 IE 和 FireFox 之间的这种差异,或者有人可以说不要再做菜鸟了……
谢谢