我有一个我制作的API网站,我希望我的javascript读取值。我有一个页面http://ec2-54-152-248-65.compute-1.amazonaws.com/temp/,上面有这个:
{'records': [{'a': 'a'}]}
我希望我的javascript读取它并将其转换为JSON。到目前为止我有这个代码,它不起作用:
$http({
method: 'JSONP',
url: "http://ec2-54-152-248-65.compute-1.amazonaws.com/temp/"
}).success(function(response) {$scope.names = JSON.parse(JSONize(response.records));});
});
有没有人有关于如何将其转换为JSON的任何理论,并将其作为我可以重复的内容读入我的网络应用程序。
这是我的console.log中的错误:
(index):1 Uncaught SyntaxError: Unexpected token :
答案 0 :(得分:1)
您的回复看起来像是错误的JSON响应,使用单引号而不是双引号,因此快速解决方案可以是:
$scope.names = JSON.parse(response.replace(/'/g, '"'));
或修复服务器端代码以生成正确的JSON响应。
答案 1 :(得分:0)
查看您的代码
$http({
method: 'JSONP',
url: "http://ec2-54-152-248-65.compute-1.amazonaws.com/temp/"
}).success(function(response) {
$scope.names = JSON.parse(JSONize(response.records));
});
});
你应该
$scope.names = JSON.parse(JSONize(response)).records;
如果您不想更改服务器端代码,请执行@MostafaR推荐或使用eval功能。 (因使用单引号而不是双引号引起的问题)
$scope.names = eval( '(' + response + ')' ).records;
答案 2 :(得分:0)
您正在混合使用JSON和JSONP。你有一个JSON对象,但你用JSONP调用它。
要避免CROS原始策略,您可能需要使用JSONP。要使用JSONP调用对象,您需要确保对象通过JSONP“可调用”,这意味着您需要它具有以下格式:
mycallback({ foo: 'bar' });
请点击此处获取一个很好的解释:What is JSONP all about
这就是CROS政策的全部内容:确保您从另一个来源(域)访问数据,因为您有权这样做,因为您知道该对象被封装在哪个函数中。