-2

指定された更新リンクをクリックすると、キャプチャ コードが 1 回だけ更新されます。更新リンクをもう一度クリックすると、キャプチャ コードが更新されません。なぜそれが起こっているのかわかりません。

これは私のコードです:

<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

4 に答える 4

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>
于 2013-09-07T09:39:36.037 に答える
0

関数をjavascript ajax callに置き換えてみてください

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");}
     });

}
于 2013-09-07T07:21:04.963 に答える
-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;

    }
于 2013-09-07T07:21:04.877 に答える
-1

サーバー上でphpページがどのように評価されるか知っていますか。

意味:

サーバーでphpページが解析されると、phpコードが評価され、評価された結果がページに返されます。次に、ページがブラウザに送信されます。つまり、ブラウザにはhtml javascript、cssとしての静的コンテンツのみがあります。 .php コードを評価したい場合は、サーバーにリクエストを送信する必要があります。

2つの方法で送信できます。

  1. ページのリロード

  2. AJAXによって。

したがって、ページをリロードしたくない場合は、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;

}

ajax呼び出しについては、これを読んで ください http://www.w3schools.com/ajax/

于 2013-09-07T07:21:40.277 に答える