Php 来自AJAX的图像(图形)在页面上显示为一组符号

Php 来自AJAX的图像(图形)在页面上显示为一组符号,php,ajax,jpgraph,Php,Ajax,Jpgraph,我正在使用jpgraph为我的站点绘制一些统计图,我想在不刷新页面的情况下这样做。因此,我将jpgraph代码放在一个单独的文件中,名为plot_graphs.php,并通过AJAX向该文件发送请求。现在,如果我直接打开文件plot_graphs.php,它会很好地打开图形。但是,当我从AJAX打开它并将其指向页面上的中显示响应时,我得到的是: �巴布亚新几内亚IHDR,��� IDATx���我@���' 我Ⱦ���&*J]�ԥB�赛克낈��Z۷�X�^�J�P�v��M�Ro]�V*R�Z�

我正在使用jpgraph为我的站点绘制一些统计图,我想在不刷新页面的情况下这样做。因此,我将jpgraph代码放在一个单独的文件中,名为plot_graphs.php,并通过AJAX向该文件发送请求。现在,如果我直接打开文件plot_graphs.php,它会很好地打开图形。但是,当我从AJAX打开它并将其指向页面上的
中显示响应时,我得到的是:

�巴布亚新几内亚IHDR,��� IDATx���我@���' 我Ⱦ���&*J]�ԥB�赛克낈��Z۷�X�^�J�P�v��M�Ro]�V*R�Z��R�E�影音��s�Y&��ߧ0̜y�3'g&shb�BԡS]B��!�A.��!�A.��P}�ݻ7iҤ��

有没有一种方法可以在不重新加载页面并将plot_graphs.php代码直接放入div的情况下实现这一点?页面的字符集是utf-8,以备不时之需。以下是plot_graphs.php的内容:

<?php

require_once ('../jpgraph/src/jpgraph.php');
require_once ('../jpgraph/src/jpgraph_line.php');

$type=$_GET['type'];
$unit=$_GET['unit'];
$term=$_GET['term'];

$datay1 = array(20,15,23,15);
$datay2 = array(12,9,42,8);
$datay3 = array(5,17,32,24);

// Setup the graph
$graph = new Graph(300,250);
$graph->SetScale("textlin");

$theme_class=new UniversalTheme;

$graph->SetTheme($theme_class);
$graph->img->SetAntiAliasing(false);
$graph->title->Set('Filled Y-grid');
$graph->SetBox(false);

$graph->img->SetAntiAliasing();

$graph->yaxis->HideZeroLabel();
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);

$graph->xgrid->Show();
$graph->xgrid->SetLineStyle("solid");
$graph->xaxis->SetTickLabels(array('A','B','C','D'));
$graph->xgrid->SetColor('#E3E3E3');
/* $graph->SetBackgroundImage("tiger_bkg.png",BGIMG_FILLPLOT); */

// Create the first line
$p1 = new LinePlot($datay1);
$graph->Add($p1);
$p1->SetColor("#6495ED");
$p1->SetLegend('Line 1');

// Create the second line
$p2 = new LinePlot($datay2);
$graph->Add($p2);
$p2->SetColor("#B22222");
$p2->SetLegend('Line 2');

// Create the third line
$p3 = new LinePlot($datay3);
$graph->Add($p3);
$p3->SetColor("#FF1493");
$p3->SetLegend('Line 3');

$graph->legend->SetFrameWeight(1);

// Output line
$graph->Stroke();

?>

看起来您试图发送二进制数据,但没有指定该数据是什么。试试这个:

header("Content-type: image/png");
$graph->Stroke();