簡體   English   中英

通過ajax和jquery重新加載外部頁面onLinkClick

[英]reLoad External Page onLinkClick via ajax and jquery

這是鏈接

<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標頭使用緩存,但沒有運氣。

請指教。

使用onclick代替href="javascript:loadCaptcha();"

<a onclick="loadCaptcha();">Reload</a>

要么

<a id="reloadCaptcha">Reload</a>

<script type="text/javascript">
 $(document).on("click", "#reloadCaptcha", loadCaptcha);
</script>

IE和Firefox由於緩存問題而不會刷新驗證碼圖像。 解決方法是每次都刪除驗證碼圖片,並使用唯一的名稱創建新的驗證碼圖片。 由於名稱將是唯一的,因此將刷新驗證碼,並且FF將因為新圖像而重新加載圖像。

我已經解決了這個問題,每次都重新創建唯一的驗證碼圖像,並在重新加載時調用該唯一圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM