使用从URL读入的javascript将String转换为JSON

时间:2015-11-08 04:31:09

标签: javascript json angularjs regex

我有一个我制作的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 :

3 个答案:

答案 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政策的全部内容:确保您从另一个来源(域)访问数据,因为您有权这样做,因为您知道该对象被封装在哪个函数中。