我在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为null,这是我的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之间的这种区别或者有人会说停止成为菜鸟并做到这一点......
由于
答案 0 :(得分:0)
您的ajax网址应该与您的html网址具有相同的主机:端口。
答案 1 :(得分:0)
在你的成功回调中,你已经获得了一个json对象。如果您尝试再次使用$ .parseJSON解析此结果,则结果为null。 http://jsfiddle.net/H4v8G/
答案 2 :(得分:0)
您需要查看json.d
而不是json
。
响应数据包含在.d
属性中,而不是直接包含在返回的对象中。
ASP.NET 3.5及更高版本会发生这种情况。
答案 3 :(得分:0)
$.ajax({
url: "http://localhost:17258/RestService.svc/json/getData",
type: "GET",
dataType: "json",
cache: false,
success: function (obj) {
for (var i = 0; i <= obj.length; i++) {
alert(obj[i].id);
}
}
});
试试这个