当我尝试通过$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成功完成。
是否可能是服务器问题?
答案 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
。只保留此值使其正常工作。