我需要在JSP中动态加载图像。我试过了
<img src="servletUrl?p1=x&p2=y"/>
,但问题是网址太长,无法使用GET发送。
我现在正在进行POST通话。从servlet我生成一个饼图图像,基于我发送的参数。图像不会保留,因此我无法返回类似“images / image1.jpg”的内容,并将其设置为图像的src。
所以我将图像作为字节数组返回并设置适当的图像内容类型。
我的问题是:一旦我在javascript中有图像字节,我如何在相应的img标签中显示它们?
这是我的AJAX电话:
new Ajax.Request(url, {
method: 'post',
parameters: params,
onComplete: function(request) {
alert(request.responseText);
}
});
答案 0 :(得分:2)
我没有尝试过这个我自己,但它应该有效。
您可以使用dataUrl创建图像并设置其src。您必须将byte[]
转换为base64编码的字符串才能生效。
new Ajax.Request(url, {
method: 'post',
parameters: params,
onComplete: function(response) {
var img = new Image();
img.src = "data:image/png;base64," + response;
document.body.appendChild(img);
}
});
答案 1 :(得分:0)
这是我头脑中的解决方案,应该适用于所有浏览器:
使用<img>
预填充表单,其中隐藏字段包含所有必需的POST参数,并设置<iframe>
处理程序以将此表单提交到图像,而不是使用AJAX和onload
标记服务脚本。使此脚本返回将在此iframe中显示的纯图像,使页面的其余部分保持不变。