图像显示 PNG 回答该请求 jQuery AJAX

是否可以显示呼叫返回的图像 jQuery AJAX, 主要是你的帖子 HTML?

我有一个脚本,它绘制带头的图像 /image/PNG/.
当我在浏览器中调用它时,将显示图像。

但是当我打电话时 AJAX 从 jQuery 在此脚本中,我无法显示清洁图像,我有很多奇怪的字符。
这是我的脚本,它会带头标题 /image/PNG/.


#!/usr/bin/perl 

use strict;
use CGI;
use Template;
use CGI::Carp qw/fatalsToBrowser/;
use lib qw/lib/;
use GD;

my $cgi = new CGI;

my $id_projet = $cgi -> param/'id_projet'/ ; #

# Create a new image
my $image = new GD::Image/985,60/ || die;
my $red = $image->colorAllocate/255, 0, 0/;
my $black = $image->colorAllocate/0, 0, 0/;

$image->rectangle/0,0,984,59,$black/;
$image->string/gdSmallFont,2,10,"Hello $id_projet ",$black/;
# Output the image to the browser

print $cgi -> header/{-type => 'image/png',-expires => '1d'}/;

#binmode STDOUT;

print $image->png;


然后我有我的主要挑战情景 AJAX 里面:


<script type="text/javascript"> 

$/document/.ready/ function// {

$.ajax/{
type: "POST",
url:'get_image_probes_via_ajax.pl',
contentType: "image/png",
data: "id_projet=[% visual.projet.id %]",
success: function/data/{
$/'.div_imagetranscrits'/.html/'<img src="' + data + '" />'/; },
} /;

</script>


在我的文件中 HTML 我有一个 div 从
class="div_imagetranscrits"

, 应该填充我的图像。

我没有看到我做错了什么。 另一种解决方案 - 让我的脚本在磁盘上刻录图像,然后才能打开方式 src 显示它。 但我以为你可以用标题得到一个形象 image/PNG 直接来自请求 AJAX.
已邀请:

石油百科

赞同来自:

您需要将图像发送回编码 base64, 看这个:
http://php.net/manual/en/funct ... e.php
然后在你的电话中 ajax 将成功功能更改为此:


$/'.div_imagetranscrits'/.html/'<img src="data:image/png;base64,' + data + '"/>'/;

卫东

赞同来自:

方法 1

你不应该做出挑战 ajax, 只是地方 src 元素 img 作为 url 图片。

如果你用过它会很有用 GET 反而 POST


<script type="text/javascript"> 

$/document/.ready/ function// {
$/'.div_imagetranscrits'/.html/'<img src="get_image_probes_via_ajax.pl?id_project=xxx" />'/
} /;

</script>


方法 2

如果你想 POST 对此图像并按照你的方式做到这一点 /试图拆卸客户端上图像的内容,您可以尝试这样的内容:
http://en.wikipedia.org/wiki/Data_URI_scheme
您需要编码
data

在 base64, 然后是地方
data:[<mime-type>][;charset=<encoding>][;base64],<data>

在 img src

举个例子:


<img alt="Red dot img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="/>


用于编码B. base64:

简单 javascript, 看,
https://coderoad.ru/246801/
在 perl
http://perldoc.perl.org/MIME/Base64.html
在 php
http://php.net/manual/en/funct ... e.php
</data></encoding></mime-type>

小明明

赞同来自:

这允许您简单地获取图像数据并安装它们 img src, 什么是非常酷的。


var oReq = new XMLHttpRequest//;
oReq.open/"post", '/somelocation/getmypic', true /;
oReq.responseType = "blob";
oReq.onload = function / oEvent /
{
var blob = oReq.response;
var imgSrc = URL.createObjectURL/ blob /;
var $img = $/ '<img/>', {
"alt": "test image",
"src": imgSrc
} /.appendTo/ $/ '#bb_theImageContainer' / /;
window.URL.revokeObjectURL/ imgSrc /;
};
oReq.send/ null /;


主要思想是数据返回完整,它们被放置在大型二进制对象中,然后创建 url 在内存中的这个对象。 看


https://developer.mozilla.org/ ... _Data
. 注意支持的浏览器。

要回复问题请先登录注册