我正在使用 Socket.IO、AngularJS、Request 和 Express,我试图从请求中提取一些数据,然后将其发送给客户端。这是我的功能:
var getJsonFromJsonP = function (url, callback) {
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
var jsonpData = body;
var json;
try {
json = JSON.parse(jsonpData);
}
catch(e) {
var startPos = jsonpData.indexOf('({');
var endPos = jsonpData.indexOf('})');
var jsonString = jsonpData.substring(startPos+1, endPos+1);
json = JSON.parse(jsonString);
}
callback(null, json);
} else {
callback(error);
}
})
}
var getScoring = function() {
var url = 'http://live.nhle.com/GameData/RegularSeasonScoreboardv3.jsonp';
var dataReturn;
getJsonFromJsonP(url, function (err, data) {
console.log(data);
return data;
});
}
io.sockets.on('connection', function(socket) {
socket.emit('init', { data: getScoring() });
});
解决方案来自getJsonFromJsonP
另一篇文章,并且产生了不错的结果。
在console.log(data)
后端显示正确的数据,但客户端(AngularJS)没有得到它。如果我更改return data
为 return 'hello world'
“hello world”,客户端中将显示为{ data : 'hello world' }
.