2012-05-24 7 views
0

我正在使用jpgraph爲我的網站繪製一些統計圖,並且我想在不刷新頁面的情況下執行此操作。所以我把jpgraph代碼放在一個單獨的文件中,命名爲plot_graphs.php並通過AJAX發送請求。現在,如果我直接打開文件plot_graphs.php,它會打開圖形就好了。但是,當我從AJAX打開它,並指出它在頁面上顯示的<div>的響應,我得到的是這樣的:從AJAX圖像(圖)顯示爲一組符號頁

�PNG IHDR,��� IDATx���[email protected]���' I;Ⱦ���&*J]�ԥB�XEEK낈��Z۷�X�^�J�P�V��m�Ro]�V*R�Z��R�E�Av��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(); 

?> 

回答

1

看起來您正在嘗試發送二進制數據而未指定該數據是什麼。試試這個:

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