2014-03-19 218 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()); 

做...