これはリンクです
<a href="javascript:loadCaptcha();">Reload</a>
それをクリックして、ajaxとjqueryを介して外部ファイルをロードしたいと思います。私のページヘッダーには、次のjavascriptコードがあります。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script language="javascript" type="text/javascript">
$(function(){
loadCaptcha();
});
function loadCaptcha()
{
$.ajax({
type: 'POST',
url: 'captcha.php',
data: "",
cache: false,
success: function(res){
$('#captcha').html(res);
}
});
}
</script>
そのリンクをクリックしてcaptcha.phpをリロードしたいと思います。onpageloadファイルcaptcha.phpはID#captchaでロードされていますが、そのリンクでリロードされていないをクリックします。
captcha.phpコード
<?php
$capt = generate_captcha();
echo '<img src="captcha.jpg" id="imgcaptcha" name="imgcaptcha" alt="'.$capt.'" style="max-width: 110px; max-height: 35px;" title="Captcha"/><input type="hidden" name="captchacode" id="captchacode" value="'.$capt.'" />';
function generate_captcha()
{
$number= rand(11111, 99999);
$width = 110;
$height= 35;
//create image using imagecreate php function
$img = imagecreate($width, $height);
$backcolor = imagecolorallocatealpha(
$img,
hexdec( substr( 'FFFFFF', 0, 2 ) ),
hexdec( substr( 'FFFFFF', 2, 2 ) ),
hexdec( substr( 'FFFFFF', 4, 2 ) ),
127 * ( 100 - 100 ) / 100
);
imagefill($img, 0, 0, $backcolor);
//create line color
$linescolor = imagecolorallocatealpha(
$img,
hexdec( substr( '333333', 0, 2 ) ),
hexdec( substr( '333333', 2, 2 ) ),
hexdec( substr( '333333', 4, 2 ) ),
127 * ( 100 - 70 ) / 100
);
//generate different lines
for( $i=0; $i<10; $i++ ) {
imageline($img, mt_rand(0,110), mt_rand(0,35),
mt_rand(0,110), mt_rand(0,35), $linescolor);
}
//Font file path
$font_path = "jokerman.ttf";
//create color for font
$font_color = imagecolorallocatealpha(
$img,
hexdec( substr( '000000', 0, 2 ) ),
hexdec( substr( '000000', 2, 2 ) ),
hexdec( substr( '000000', 4, 2 ) ),
127 * ( 100 - 100 ) / 100
);
//add characters to the image
imagettftext($img, 22, 0, 5, 28, $font_color, $font_path, $number);
//store image
imagejpeg($img, "captcha.jpg", 100);
return $number;
}
?>
更新:chromeは更新された画像を表示しています、firefox、つまり画像を更新していません。キャッシュの問題。私はphpヘッダーを介してキャッシュを使用していませんが、運がありません。
お知らせ下さい。