2017-01-02 49 views
0

我有一個Angular服務我試圖設置從節點服務器檢索數據,該服務器將JSON文件提供給應用程序。我已經檢查過節點服務器的URL,它們都是像輸出JSON一樣輸出JSON,但是由於HTTP頭文件的存在,Angular似乎無法獲取它們。從一些谷歌搜索這看起來像一個共同的問題,我只是不知道如何或甚至有工作?

eventsApp.factory('eventData', function($http, $log) { 
    return { 
     getEvent: function(successcb) { 
      $http({method: 'GET', url: 'http://localhost:8000/data/event/1'}). 
       success(function(data, status, headers, config){ 
        successcb(data); 
       }). 
       catch(function(data, status, headers, config){ 
        $log.warn(data, status, headers, config); 
       }) 
     } 
    } 
}); 

在控制檯中我得到從抓以下警告:

對象{數據:空,狀態:0,頭:headersGetter/<(),配置:對象,狀態文本: 「」}未定義未定義未定義

+0

因爲'.success()'不推薦使用,所以應該使用'.then()'而不是'.success()'。 '.then()'有一個'response'參數,您應該可以從中訪問頭文件。 – Claies

+0

我對Angular完全陌生(本週只開始研究它),對我一無所知,但是如何改變上面的代碼以取代成功? –

+0

在控制檯中更新您的帖子,提供更詳細的信息 – Aravind

回答

1

documentation

// Simple GET request example: 
$http({ 
    method: 'GET', 
    url: '/someUrl' 
}).then(function successCallback(response) { 
    // this callback will be called asynchronously 
    // when the response is available 
    }, function errorCallback(response) { 
    // called asynchronously if an error occurs 
    // or server returns response with an error status. 
    }); 

響應對象具有以下屬性:

  • 數據 - {string|Object} - 與 變換函數變換的響應體。
  • status - {number} - 響應的HTTP狀態代碼。
  • 標頭 - {function([headerName])} - 標頭吸氣功能。
  • config - {Object} - 用於生成 請求的配置對象。
  • statusText - {string} - 響應的HTTP狀態文本。

所以,你應該能夠得到使用興趣頭:根據您迴應的日誌

response.headers('header-name') 

ASLO:在result.data爲空。因此,您應該檢查Chrome Dev ToolsNetwork選項卡並檢查來自服務器的實際http響應。

status 0表示可能的CORS問題。因此,如果您的角度應用程序託管在另一個主機或端口上,而不是您嘗試發送http請求的服務器(您的情況爲localhost:8000),那麼您應該配置允許CORS請求的SERVER

+0

好吧,所以我已經將它改爲'then(function successCallback(response){successcb(response.data);})'但是仍然失敗 –

+0

所以,按照我的建議:檢查Chrome開發工具中的真實http響應。 'data'爲空,'status == 0'意味着你的請求甚至不傳遞給服務器。如果您的應用程序的角度不託管在同一主機':port'爲您的服務器('本地主機:8000')到你發送的HTTP請求,那麼很可能在CORS問題。 – djxak

+0

狀態是200,再加上它直接輸入網址進入這肯定意味着它的優良瀏覽器的時候,沒有問題加載? –