当前位置: 首页 > 面试题库 >

显示PNG图片作为对jQuery AJAX请求的响应

汪皓
2023-03-14
问题内容

是否可以在HTML的主流中显示由jQuery AJAX调用返回的图像?

我有一个脚本,用于绘制带有标题的图像(图像/ PNG)。当我在浏览器中简单地调用它时,就会显示图像。

但是,当我在此脚本上使用jQuery进行AJAX调用时,我无法显示干净的图像,但其中包含许多奇怪的符号。这是我的脚本,使图像带有标题(图像/ 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中以显示它的路径。但是我认为可以直接从AJAX请求中获取带有图像/
PNG标头的图像。


问题答案:

您需要将图像发送回以base64编码的图像,请看以下内容:http
:
//php.net/manual/en/function.base64-encode.php

然后在ajax调用中将成功函数更改为:

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


 类似资料:
  • 我正在使用AngularJS。我将图像显示为:src=“data:image/png;base64,ivborw0kg...”成功了。当我把'png'改成jpeg、gif或jpg时,什么也没有发生。它仍然正确显示。所以我想问你前缀对显示图像的影响是不是?消极还是积极? 此外,我接收的数据图像从服务器没有任何前缀。所以我必须设置一个硬代码'data:image/png;base64,‘。这是好还是坏

  • 我正在使用Apache Camel将数据从CSV文件加载到webservice。我是否可以显示请求和响应。以下是路线配置。。 我从数组中拆分并聚合100个项目,以作为邮件正文发送。 请让我知道如何使用上述路线显示请求和响应?

  • 我正在使用JMeter为2000个用户测试托管在azure服务器上的应用程序。但我得到了以下错误响应代码:非HTTP响应代码:org.apache.HTTP.conn.HttpHostConnectException响应消息:非HTTP回应消息:连接到http://www.app.com拒绝 响应代码:非HTTP响应代码:Java . net . sockettimeoutexception响应消

  • 问题内容: 如果浏览器收到对ajax请求的重定向响应,该怎么办? 问题答案: 如果浏览器收到对ajax请求的重定向响应,该怎么办? 如果服务器发送了重定向(又名302响应加上Location:标头),则浏览器将自动跟随重定向。对 第二个 请求的响应(假设它也不是另一个重定向)是程序所暴露的。 实际上,您没有能力检测是否已发生302响应。如果302重定向导致200,则您的程序的行为就如同原始请求直接

  • 问题内容: 因此,我正在一个需要调用服务器并返回zip文件的网站上工作,问题是我不确定自己是否做对了所有事情。该代码看起来像这样: 如您所见,我需要使用响应中的字节数组来填充文件,我该怎么做? 问题答案: 一种利用的方法; 检查element是否具有属性,如果为true,则将property 设置为; 否则,使用带参数的响应 使用jQuery版本叉的 只需下载就可以了 您可以使用元素,属性 或者使

  • 问题内容: 我有点卡住。为什么不做这项工作?我只是收到一条错误消息: java.lang.NoSuchMethodError:主要 线程“主”中的异常 问题答案: main需要是静态的,并且必须具有String []而不是String的参数。 为了解决这个问题,将所有东西都放在构造函数中,例如