2014-03-19 190 views
0

html的我有一個PHP函數來生成圖像:從PHP發送圖像通過AJAX

function gen_img(){ 
$image = imagecreate(200,200); 
.... //some php codes 
header("Content-type:image/jpeg"); 
imagejpeg($image); 
} 
// there is no problem when generating image, image generated successfully when i call the function 

我知道如何使用這把它放在HTML:

<img id='imageone' src="link to the function"> 
// the image shown, loaded in the <img> tag, no problem 

,但現在我想要使​​用jquery ajax加載圖像,然後將其放入<img>標記。 有人可以告訴我的方式嗎?

+1

爲什麼這樣呢?將html標籤放入dom中的那一刻,瀏覽器會自動加載圖像。爲什麼要經過base64編碼圖像數據的麻煩? – Tschallacka

+0

我想要刷新圖像,並且它是隨機圖像。它最喜歡驗證碼 –

+0

啊。那麼,我會用base 64編碼圖像數據。看到我的回答 – Tschallacka

回答

0

我建議在JavaScript部分中的圖像數據

$data = imagecreate(200,200); 
$type = 'jpeg'; 
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data); 
echo $base64; 

編碼的base64你應該能夠做到:

document.getElementById('captha').src='data:image/png;base64,iVBORw0KGgoAAAANSUh............................. etc...'; 

羽翼豐滿例如:

<img src="blank.gif" id="captha"> 
<script type="text/javascript"> 
jQuery.ajax('captha.php?ident=xyhksj78').done(function(data){ 
     document.getElementById('captha').src=data; 
     }); 
</script> 
+0

此消息的錯誤:base64_encode()期望參數1爲字符串 –

+0

您必須使用somesort的文件讀取器才能使其工作。 大多數示例都是從磁盤讀取文件並將讀取的文件實現到base64中。 – Tschallacka

0

我想要刷新圖像,並且它是隨機圖像。它最喜歡一個驗證碼

仍然不需要使用AJAX。

簡單地爲圖像元素設置新的src屬性值。你可以f.e.加上當前時間戳值作爲查詢字符串參數,從而使瀏覽器將再次從服務器請求它,而不是從它的緩存中獲取它:

$('#imageone').attr('src', 'scriptname.php?' + (new Date).getTime()); 

做...