2012-05-03 57 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); 
     } 
    } 
}); 

試試這個

相關問題