2014-04-22 70 views
0

我想使用Angular.js $ http.get()函數引入json文件。該調用顯然可以找到該文件,但它是以text/plain類型返回的,而不是application/json。我從this post得知我需要更改服務器代碼來完成這項工作,但我無法控制服務器。有沒有辦法從我的最後強制應用程序/ JSON?Angular.js更改內容類型的GET請求

我的代碼:

var blueprint = {}; 
$http.get('/path/to/data.json', {header : {'Content-Type' : 'application/json'}}) 
    .success(function (data) { 
     for (var prop in data) { 
      blueprint[prop] = data[prop]; 
     } 
    }) 
    .error(function(){ 
     console.log('Data not found.'); 
    }); 

感謝,
泰勒

+0

要設置以獲取JSON響應的標頭爲'Accept:application/json'。 'Content-type'指定請求的內容類型。它是否完全有效取決於服務器的實現方式。 –

+0

我把它改成了'{header:{'Accept':'application/json'}}',但是無濟於事。任何其他想法? –

+0

我只注意到你只是追求一個靜態json文件。我認爲你必須改變服務器,爲擴展名爲.json的文件返回正確的MIME類型。 –

回答

0

據我瞭解,當$http service檢測到的響應是一個JSON對象,在文本適用JSON.parse()並直接返回對應的JS對象。在你的情況下,它沒有檢測到它,所以你應該自己解析響應。請嘗試以下操作:

var blueprint = {}; 
$http.get('/path/to/data.json', {header : {'Content-Type' : 'application/json'}}) 
.success(function (data) { 
    data = JSON.parse(data); // missing line 
    for (var prop in data) { 
     blueprint[prop] = data[prop]; 
    } 
}) 
.error(function(){ 
    console.log('Data not found.'); 
});