错误:无法将“数据”转换为对象

时间:2014-10-23 17:20:58

标签: javascript jquery angularjs opera

我在S3上主持一个SPA,它适用于IE,Chrome和Opera版本25,但不适用于Opera版本12.17。 在应用加载时,我使用 angular $ http.get 向我们的API发出请求,当我查看网络流量时,它不会显示这些请求。

var config = { 'Authorization' : 'Bearer '+ accessToken };

$http.get(url, { headers : config })
   .success(function(data, status) {
   $rootScope.info = " In success callback";
   callback(transformResponse(data));
})
.error(function(data, status, headers, config){
   $rootScope.info = " In error callback";
   callback(data.error);
 });

我在控制台中收到以下错误。

Error: Cannot convert 'data' to object
    <anonymous function: f.error>([arguments not available])@http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js:72
    <anonymous function: then>([arguments not available])@http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js:100
    <anonymous function: then>([arguments not available])@http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js:100
    <anonymous function: then>([arguments not available])@http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js:100
    <anonymous function: then>([arguments not available])@http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js:101
    <anonymous function: $eval>([arguments not available])@http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js:111
    <anonymous function: $digest>([arguments not available])@http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js:108
    <anonymous function: $apply>([arguments not available])@http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js:112

看起来它可能是一个CORS问题,如果我将资源放在与我的应用程序相同的域下并请求该资源,那么它就可以正常工作。 什么是导致这个问题的OPERA 12.17以及可能的解决方法?

1 个答案:

答案 0 :(得分:0)

原来这是一个CORS问题。在CORS方面,Opera 12.17似乎非常严格。我将应用程序和所有必要的资源移动到一个域中,它可以正常工作。注意*此问题仅发生在Opera 12.17中,以后的版本似乎有效。