5

我需要在 JSP 中动态加载图像。我试过了 <img src="servletUrl?p1=x&p2=y"/>,但问题是 URL 太长,无法使用 GET 发送。

我现在正在执行 POST 调用。根据我发送的参数,我从 servlet 生成饼图图像。图像没有保留,所以我不能返回“images/image1.jpg”之类的东西并将其设置为图像的 src。

所以我将图像作为字节数组返回并设置适当的图像内容类型。

我的问题是:一旦我在 javascript 中有图像字节,如何在相应的 img 标签中显示它们?

这是我的 AJAX 调用:

new Ajax.Request(url, {
        method: 'post',
        parameters: params,
        onComplete: function(request) {
                    alert(request.responseText);      
        }
});
4

2 回答 2

2

我自己没有尝试过,但它应该可以工作。您可以使用dataUrl创建图像并设置其 src 。您必须将byte[]in 转换为 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);
        }
});
于 2012-05-21T09:12:45.707 回答
0

这是我头脑中的解决方案,应该适用于所有浏览器:

代替 AJAX 和<img>标签,使用<iframe>带有隐藏字段的预填充表单,其中包含所有必要的 POST 参数,并onload设置处理程序以将此表单提交到图像服务脚本。使此脚本返回将显示在此 iframe 中的纯图像,保持页面的其余部分完好无损。

于 2012-05-21T09:23:48.373 回答