2014-04-22 100 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.'); 
});