本地Ajax调用成功但没有返回数据

时间:2012-05-03 12:51:31

标签: jquery ajax json

我在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之间的这种区别或者有人会说停止成为菜鸟并做到这一点......

由于

4 个答案:

答案 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);
        }
     }
});

试试这个