我刚刚开始使用此代码测试一个简单的API:
$http.get('/api/products?limit=10').then(function (response) {
console.log(response.status);
});
我收到了这个错误:
SyntaxError:意外的令牌{ at Object.parse(native) at fromJson(http://localhost:8000/bower_components/angular/angular.js:1271:14) 在defaultHttpResponseTransform(http://localhost:8000/bower_components/angular/angular.js:9460:16) 在http://localhost:8000/bower_components/angular/angular.js:9551:12 at forEach(http://localhost:8000/bower_components/angular/angular.js:340:20) 在transformData(http://localhost:8000/bower_components/angular/angular.js:9550:3) 在transformResponse(http://localhost:8000/bower_components/angular/angular.js:10319:21) at processQueue(http://localhost:8000/bower_components/angular/angular.js:14792:28) 在http://localhost:8000/bower_components/angular/angular.js:14808:27 在Scope。$ eval(http://localhost:8000/bower_components/angular/angular.js:16052:28)
顺便说一下,使用这个非角度代码,它可以正常工作:
function httpGetAsync(theUrl, callback) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
callback(xmlHttp.responseText);
}
xmlHttp.open("GET", theUrl, true); // true for asynchronous
xmlHttp.send(null);
}
httpGetAsync('/api/products?limit=10', function(response) {
console.log(response);
});
API的一些代码:
res.writeHead(200, {
'Content-Type': 'application/x-json-stream'
});
// random delay
setTimeout(function () {
var i;
for (i=0; i<limit; i+=1) {
res.write(JSON.stringify(createRandomItem(i+skip, sort)) + '\n');
}
res.end();
}, 100 + Math.floor(Math.random() * 3000));
我真的无法弄清楚问题是什么,也已经尝试过资源而且没有用。 您可以看到整个代码on my github,请提供帮助。
答案 0 :(得分:0)
我在客户端解决了这个问题:
var WareHouseResource = $resource('/api/products?limit=10', {}, {
query: {
method: 'GET',
isArray: true,
transformResponse: function(data) {
data = ('[' + data + ']').replace(/}/g, '},').replace(',\n]', ']');
return angular.fromJson(data);
}
}
});