Angular JS $ http.get在JSON字符串末尾添加[]

时间:2015-08-05 17:16:07

标签: json angularjs

当我尝试通过$http.get从URL解析JSON时,我在字符串的末尾会出现一个奇怪的[]

我使用的网址是:

http://tol.vpo.si/json/fetchCategories/

和代码:

 $http.get('http://tol.vpo.si/json/fetchCategories/',
            {
                cache: false,
                transformResponse: function (data, headersGetter) {
                    console.log(data);
                    try {
                        var jsonObject = JSON.parse(data); // verify that json is valid
                        return jsonObject;
                    }
                    catch (e) {
                        console.log("did not receive a valid Json: " + e)
                    }
                    return {};
                }
            }
        ).then(function(resp) {
            $scope.categories= resp.data;
        }, function(err) {
           console.log(err)
        });

答案:

console.log:
[{"ID":"69","IME":"ANALISI TECNICA","D1":"al"},{"ID":"375","IME":"PRIMO PIANO","D1":"prp"}][]
  

没有收到有效的Json:SyntaxError:意外的令牌[

通过JSON验证,URL成功完成。

是否可能是服务器问题?

1 个答案:

答案 0 :(得分:0)

查看此工作演示:JSFiddle

通过比较$http请求中的请求标头和来自浏览器的常规请求,我发现标头字段Accept中存在差异。如果未指定Accept,则该字段为Accept:application/json, text/plain, */*。添加此代码可使返回的数据正确无误:

headers: {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
},

似乎魔术选项是text/html。只保留此值使其正常工作。