2012-05-03 58 views
3

我创建在Visual Studio两个项目2010是一个Web服务,另一个是Web应用程序,我对Web服务的方法如下:当地Ajax调用成功,但没有数据返回

`[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); 
        } 
       } 
      });`     

我m尝试在FireFox和JSON变量回来为空,当在IE调试器调试时,我可以添加一个手表的对象,并可以看到该对象有它下面的数组,我需要使用json.TestCallResult,而不是有其他人看到IE和FireFox之间的这种差异或可以有人说,不要做一个noob,并做到这一点...

谢谢

+0

是您的网站(一个要从中调用Web服务)也坐落在localhost:17258或做服务器响应端口17258发送一个报头包含访问控制允许-Origin设置? – devnull69

+0

当你在IE中调试哪个值有json var? – JotaBe

回答

0

你的ajax url应该和你的html的url有相同的host:port。

0

在你的成功回调中,你已经获得了一个json对象。如果你试图用$ .parseJSON再解析一次,结果是null。 http://jsfiddle.net/H4v8G/

0

您需要查看json.d而不是json

响应数据包含在.d属性中,而不是直接在返回的对象中。

这发生在ASP.NET 3.5及更高版本中。

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

试试这个

相关问题