jQuery AJAX呼び出しによって返された画像をHTMLのメインストリームに表示することは可能ですか?
ヘッダー付きの画像(image / PNG)を描画するスクリプトがあります。ブラウザで呼び出すだけで画像が表示されます。
しかし、このスクリプトでjQueryを使用してAJAX呼び出しを行うと、きれいな画像を表示できず、奇妙な記号がたくさんあるものがあります。これは、ヘッダー付きの画像(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ファイルにはclass="div_imagetranscrits"
、画像を入力するためのdivが1つあります。
何が間違っているのかわかりません。もう1つの解決策は、スクリプトで画像をディスクに書き込み、srcに含めるパスを取得して表示することです。しかし、AJAXリクエストから直接image/PNGヘッダー付きの画像を取得することは可能だと思っていました。