Angular如何使用Json数据
Angular How can i use that Json Data
我必须使用来自该服务的数据:
http://api.flickr.com/services/feeds/photos_public.gne?format=json&jsoncallback=cb&tags=伦敦
所有的数据都与html混合,在用在线工具清理后
数据如下:
cb({
"title": "Recent Uploads tagged london",
"link": "http://www.flickr.com/photos/tags/london/",
"description": "",
"modified": "2015-06-27T17:21:27Z",
"generator": "http://www.flickr.com/",
"items": [
{
"title": "Citywards",
"link": "http://www.flickr.com/photos/peterphotographic/19182673346/",
"media": {"m":"http://farm1.staticflickr.com/269/19182673346_eae48f0d5d_m.jpg"},
"date_taken": "2015-06-22T20:25:21-08:00",
"description": " <p><a href='"http://www.flickr.com/people/peterphotographic/'">peterphotographic<'/a> posted a photo:<'/p> <p><a href='"http://www.flickr.com/photos/peterphotographic/19182673346/'" title='"Citywards'"><img src='"http://farm1.staticflickr.com/269/19182673346_eae48f0d5d_m.jpg'" width='"173'" height='"240'" alt='"Citywards'" /><'/a><'/p> <p>W&DPS City Walk 2015<br /> <br /> Thameside, London, UK<'/p>",
...ETC
例如,我应该如何清洁和显示ng重复中的每个项目?
这是Plunker
对于那些什么都看不到的人来说,这可能是因为你遇到了访问控制允许来源的问题,你可以安装这个chrome插件,激活它并刷新页面,你会看到数据和日志:
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?utm_source=chrome-ntp图标
我遇到了同样的问题。
对于那些什么都看不见的人来说,这可能是因为你如果出现Access Control Allow Origin问题,则可以安装此chrome插件,激活它并刷新页面,您将看到数据和日志:
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?utm_source=chrome-ntp图标
糟糕的做法是,因为你不能要求用户允许跨源呼叫,因为你会让他们容易受到攻击。相关OWASP wiki->CORS、CSRF
你得到的回应是JSONP。对于跨域请求,我们应该使用JSONP。
您应该将&jsoncallback=cb
更改为&jsoncallback=JSON_CALLBACK
,因为AngularJS$http方法希望它是这样的,否则.success
不会激发。
代码中的另一件事是,method: 'POST'
用于向服务器发送数据,而不是获取数据。所以要从服务器获取数据,我们应该使用HTTPGET方法。
app.js
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope, $http) {
$scope.data = null;
$http.jsonp('http://api.flickr.com/services/feeds/photos_public.gne?format=json&jsoncallback=JSON_CALLBACK&tags=london')
.success(function(res) {
console.log(res.items);
$scope.data = res.items;
})
.error(function() {
//handle error
});
});
index.html
<!DOCTYPE html>
<html ng-app="plunker">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.3.x" src="https://code.angularjs.org/1.3.16/angular.js" data-semver="1.3.16"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<hr />
<div ng-repeat="item in data">
<div>
<p>Title: {{item.title}}</p>
<p>Author: {{item.author}}</p>
<img ng-src="{{item.media.m}}" />
<p>Tags: {{item.tags}} </p>
<p>Published at: {{item.published}}</p>
</div>
<hr />
</div>
</body>
</html>
更新的Plunker:http://plnkr.co/edit/K8JtNnf2nAioOUrCfuDm?p=preview
看起来Flickr使用了JSONP,因为您必须提供回调函数名称。因此,我认为您正在调用的URL应该如下所示:
http://api.flickr.com/services/feeds/photos_public.gne?format=json&jsoncallback=JSON_CALLBACK&tags=london(请注意jsoncallback参数的值已更改)。您应该使用HTTP的JSONP方法进行调用:
return $http.jsonp('http://api.flickr.com/services/feeds/photos_public.gne?format=json&jsoncallback=JSON_CALLBACK&tags=london');
然后在控制器中:
app.controller('MainCtrl', function($scope, $http, getFlickrImages) {
$scope.data = null;
getFlickrImages.getData().then(function(dataResponse) {
$scope.data = dataResponse;
});
});
$scope.data
应该将调用的有效载荷作为JS对象。如果它以字符串形式传递,则可以使用angular.fromJSon()
函数轻松地将其解析为JS对象。
然后在UI中,您可以执行以下操作:
<body ng-controller="MainCtrl">
<div ng-repeat="item in data.items">
<div>
<h1>{{item.title}}</h1>
</div>
</div>
</body>
我还没有测试过代码,所以它是按原样提供的。
- 无法使用变量访问数据 JSON
- 使用 ng-repeat解析不均匀数据/ json对象
- 在没有jsonp的情况下从另一个域获取数据(json格式)
- 如何获取带参数的数据json
- 如何在android中显示实时雅虎金融股票数据..json格式如下所示
- 使用 JavaScript 将数据 json 显示到网页中
- 高位图表来源于API数据(JSON)
- 使用动态数据json初始化同位素
- Django:将数据JSON从视图传递给javascript
- 存储配置数据 (json)
- 未捕获的SyntaxError:意外的标识符图像数据json
- 接收数据json/jquery
- Jquery数据表数据json
- 不能在cakephp中使用数组数据json
- 在不锁定浏览器的情况下,将大数据JSON从REST请求反序列化为对象
- 如何读取数据JSON格式数组的字符串数据
- 我有一个流星应用程序,需要从/public/_assets/results/mmresults读取数据.Json文件,在
- 数据json不显示在html
- 使用2个下拉列表创建2个并排的表行来比较数据- JSON
- 需要将复杂的json对象转换为合适的angularjs UI树数据json结构