我从我的数据库中获取了一个图片网址,需要将其显示在<img>
标记中。我遇到的问题是JSF将&
编码为&
并且找不到图像网址。
这是一个例子。正确的图片网址:
https://<server details>?ahid=2096&aid=107687&lid=28812968&url=202.jpg
已编码的网址:
https://<server details>?ahid=2096&aid=107687&lid=28812968&url=202.jpg
在这种情况下,找不到编码图像url并显示损坏的图像图标。我该如何解决这个问题?
编辑:html
元素及其JSF
标记:
<a href='#{product.itemUrl}' target="_blank">
<img src='#{searchResults.getThumbnailUrl(product)}' class="img-responsive imageproduct" />
</a>
编辑2:
我以为我尝试用&
将&
替换回javascript
,但这不起作用,因为在javascript
图片中网址很好,而在浏览器的视图来源中却没有。这是代码。在浏览器中:
<img id="thumbnailId" onmouseover="decodeUrl(this)" src="https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&aid=108183&lid=28955872&url=144-1.jpg" />
javascript:
function decodeUrl(img) {
var url = img.src;
console.log("url before = " + url);
url = replaceAll(url, "&", "&");
console.log("url after = " + url);
}
function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, 'g'), replace);
}
输出
url before = https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&aid=108183&lid=28955872&url=144-1.jpg
url after = https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&aid=108183&lid=28955872&url=144-1.jpg
你可以看到两者是完全相同的。但是做一个视图源会导致
src="https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&aid=108183&lid=28955872&url=144-1.jpg"
哪个不正确,图像坏了。知道如何解决这个问题吗?
答案 0 :(得分:2)
您在浏览器中看到的内容是正确的。在html中,&
应编码为&
这在技术上被解释为&amp;当您的浏览器请求图像时,您可以在评论中看到您作为http 200响应发布的内容。这里有什么问题,你希望https://www.proxibid.com/asp/LotImageViewer.asp?ahid=3231&aid=108183&lid=28955872&url=144-1.jpg
在返回一个html页面时返回一个图像
LotImageViewer.asp?ahid=4292&aid=108223&lid=29012930&url=127.jpg
www.proxibid.com/asp
GET 200 OK
text/html
searchresults:696 Parser 5.1 KB 34.7 KB 277 ms 228 m
如果您在浏览器中发布this url(或只是点击此处),您可以看到它返回的内容。所以基本上,错误是你的期望&#39;。如果您点击全屏&#39;在图片中,您将看到
https://www.proxibid.com/AuctionImages/3231/108183/FullSize/144-1.jpg
显示图像全屏。所以你需要调整你的代码