所以我有以下代码:
<body lang="en-US" ng-app="socket-server" ng-controller="imageValidationController">
<div class="image-panel">
<h1>Images Found:</h1>
<div class="image-list" ng-repeat="image in images">
<p>Image size: {{image.size}}</p>
<p>Width: {{image.width}}</p>
<p>Height: {{image.height}}</p>
<img class="image" ng-src="{{image.image}}">
</div>
<p>Total images found: {{num_images}}</p>
</div>
我有以下JavaScript:
var app = angular.module('socket-server', []);
app.controller('imageValidationController', function($scope, $http) {
$http({
method: 'POST',
data: 'html=<html><body><img src="https://media.giphy.com/media/lhvyCCcFuQFKo/200.gif"></body>',
url: '/app/image-validation',
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
.then(function(response) {
$scope.images = response.data.images;
$scope.num_images = response.data.num_images;
})
})
/app/image-validation返回格式的对象:
{
images: [
{
image: 'http://someurl.com/image.jpg',
size: 471812
width: 640
height: 480
}
]
}
我已经确认它有效。
一切正常,图像大小,宽度,高度都已更新,但是图像却没有。它确实可以使用正确的源创建一个图像标签,但是图像根本不会加载。我不确定我在这里做错了。
唯一的问题是响应数据。应该像
之前:
{
images: [
{
image: 'http://someurl.com/image.jpg',
size: 471812
width: 640
height: 480
}
]
}
之后:
{
images: [
{
image: 'http://someurl.com/image.jpg',
size: 471812,
width: 640,
height: 480
}
]
}
这是一个带有适当响应数据的小提琴,它效果很好!
jsfiddle demo
也许它可能就像在图像URL中添加decache查询字符串一样简单?即。
.then(function(response) {
$scope.images = response.data.images;
$scope.num_images = response.data.num_images;
angular.forEach( $scope.images.image , function(url, key) {
$scope.images[key].image= url+ '?decache=' + Math.random();
})
基本上是帖子数据中的URL,https://media.giphy.com/media/lhvyccccfuqfko/200.gif实际上不是GIF。这是带有GIF的HTML页面,因此没有加载它。
如果我将另一个图像URL用于帖子数据,则可以正常工作:
app.controller('imageValidationController', function($scope, $http) {
$http({
method: 'POST',
//should work fine now
data: 'html=<html><body><img src="https://media3.giphy.com/avatars/nikdudukovic/ylDRTR05sy6M.gif"> </body>',
url: '/app/image-validation',
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
.then(function(response) {
$scope.images = response.data.images;
$scope.num_images = response.data.num_images;
})
})
作为数据返回:
{
"images":[
{
"image": "https://media3.giphy.com/avatars/nikdudukovic/ylDRTR05sy6M.gif",
"size": 337783,
"width": 250,
"height": 250,
}
],
"num_images": 1
}