动态生成的图像,使用POST获取

时间:2012-05-21 08:31:08

标签: java javascript ajax prototypejs

我需要在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);      
        }
});

2 个答案:

答案 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中显示的纯图像,使页面的其余部分保持不变。