如何在不刷新页面的情况下刷新验证码

时间:2013-09-07 07:10:20

标签: php javascript html

当我点击我给定的刷新链接时,我的验证码只刷新一次。如果我再次点击刷新链接,它不会刷新验证码。我不明白为什么会这样。

这是我的代码:

<a href='javascript: refresh_captcha();'>refresh</a>  
function refresh_captcha()
{
    <?php
        $captcha1 = new CaptchaCode();
        $code = str_encrypt($captcha1->generateCode(6));

    ?>
    var img = document.getElementById('captcha_img');
    img.src = '<?php echo "/captcha_images.php?width=120&height=40&code=$code"?>';
    document.getElementById ("captcha_img").src = img.src;

}

4 个答案:

答案 0 :(得分:2)

这是我的方法

 <p>
      <img id='captcha_img' style='border: 1px solid #CBD8E5;' src='/captcha.php?img=<?=time();?>'/><br/>

      <a href="#" onclick="document.getElementById('captcha_img').src='captcha.php?img=' + Math.random(); return false">Reload Captcha</a>
 </p>

答案 1 :(得分:0)

尝试用javascript ajax调用替换你的函数

function refresh_captcha()
{
    $.ajax({
    type:"GET"
    url: "/captcha_images.php?width=120&height=40&code=$code"?>'
    success: function(msg)
   {
    document.getElementById ("captcha_img").src = msg;
   },
error:functon(){alert("some error occured");}
     });

}

答案 2 :(得分:-1)

使用以下代码

<a href='javascript: refresh_captcha();'>refresh</a>  
    function randomString(length, chars) {
        var result = '';
        for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];
        return result;
    }
    function refresh_captcha()
    {
        var code = randomString(6, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
        var img = document.getElementById('captcha_img');
        img.src = '<?php echo "/captcha_images.php?width=120&height=40&code="?>'+code;
        document.getElementById ("captcha_img").src = img.src;

    }

答案 3 :(得分:-1)

你知道如何在服务器上评估php页面。

表示:

当在服务器上解析php页面时,会对php代码进行评估并将评估结果发送回页面。然后将页面发送到浏览器。我的意思是说,你将只有静态内容为html javascript,css在你的浏览器上。如果你想评估你的PHP代码,那么你必须向服务器发送请求。

可以通过两种方式发送。

  1. 按页面重新加载

  2. 通过AJAX。

  3. 所以,如果您不想重新加载页面,那么您应该去ajax。 然后你的代码将是

    <a href='javascript: refresh_captcha();'>refresh</a>  
    function refresh_captcha()
    {
     // ajax call to server to get new captcha string
     // evaluate this code on server and send string back to browser
     //<?php
     //   $captcha1 = new CaptchaCode();
     //   $code = str_encrypt($captcha1->generateCode(6));
     //
     //?>
     // var code = <ajax response>
    
    var img = document.getElementById('captcha_img');
    img.src = '/captcha_images.php?width=120&height=40&code='+code; // change this line
    //document.getElementById ("captcha_img").src = img.src;
    
    }
    

    for ajax call读取此内容 http://www.w3schools.com/ajax/