在AngularJS中使用$http服务的JSONP方法
发布时间:2020-12-17 07:59:27 所属栏目:安全 来源:网络整理
导读:我是AngularJS的相对新手,并成功使用$http的GET方法作为基本的概念验证应用程序,我现在正尝试使用JSONP方法从远程URL中提取一些JSON我是得到了.我在这里创建了一个基本的plunker来展示我正在尝试做的事: http://plnkr.co/edit/Joud0ukAzhgvNM0h9KjB?p=previ
我是AngularJS的相对新手,并成功使用$http的GET方法作为基本的概念验证应用程序,我现在正尝试使用JSONP方法从远程URL中提取一些JSON我是得到了.我在这里创建了一个基本的plunker来展示我正在尝试做的事:
http://plnkr.co/edit/Joud0ukAzhgvNM0h9KjB?p=preview
我在我的控制器中使用HTTP请求,如下所示: $http({method: 'jsonp',url: 'http://ec2-54-229-49-250.eu-west-1.compute.amazonaws.com/country?callback=JSON_CALLBACK'}). success(function(data) { $scope.countries = data; console.log('success'); }). error(function(data) { console.log('error'); }); …但我什么都没有回来(除了控制台中的“错误”).我知道URL返回有效的JSON(http://ec2-54-229-49-250.eu-west-1.compute.amazonaws.com/country?callback=angular.callbacks._0),但我只是没有得到任何回报……
JSONP要求您将JSON响应包装到Javascript函数调用中.
当您执行JSONP时,请求查询字符串将设置一个名为“callback”的参数,该参数将告诉您的服务器如何包装JSON响应. 所以响应应该是这样的: callback([ {"id": "1","name": "John Doe"},{"id": "2","name": "Lorem ipsum"},{"id": "3","name": "Lorem ipsum"} ]); Angular会将回调参数定义为angular.callbacks._0,angular.callbacks._1,angular.callbacks._2 …取决于它等待响应的请求数量,因此如果您执行单个请求,则响应应为: angular.callbacks._0([ {"id": "1","name": "Lorem ipsum"} ]); 服务器应使用请求字符串中的callback参数来相应地设置响应. 检查您的Plunker’s网络活动,您将看到该请求正在设置回调参数,但您获得的响应未被包装. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |