0

これは非常に不気味です。サーバー側で生成されたCAPTCHAイメージをリロードしようとしていますが、ページ全体をリロードしたくないので、AJAXを使用する必要があります。したがって、私が行うことは、最初にサーバー側で(AJAXを使用して)phpファイルをトリガーすることです。これにより、必要なすべてのものが更新され、新しいCAPTCHAイメージを取得できるようになります。次に、これが完了したら、画像src = ""を更新して、そのphpファイルから新しい画像をロードします。ここにコードがあります:


  • ファイル1

HTML:

<tr id="rowWithCaptcha">
                    <td><p><img id="captchaImg" src="./?<?php echo session_name() ?>=<?php echo session_id() ?>"/></p></td>
</tr>

JQuery-スクリプト:

$("#reloadImg").click(function(){
           $.ajax({
              url: 'getNewKCAPTCHA.php',
              cache: false,
              type: 'POST',  
              async: false,
              success: function(){
                 $("#captchaImg").attr("src","http://localhost/Captcha2/TestPages/TestPage3Q/getNewKCAPTCHA.php?");
              }
           });
        });

  • ファイル2:

PHP:kcaptcha.phpは、すべてのキャプチャマジックが発生する場所です:)したがって、ブラウザでこのphpファイルを開くだけで、キャプチャ画像自体を取得できます。また、ページをリロードすると、画像は毎回変更されます。

    <?php include('kcaptcha.php'); session_start(); $captcha = new KCAPTCHA(); $_SESSION['captcha_keystring'] = $captcha-getKeyString(); echo TRUE; ?>

つまり、奇妙なことに、このすべて(AJAX呼び出しと画像の更新)は新しいChromeブラウザーで問題なく機能しますが、FFOXまたはIEで試してみると、1回しか機能せず、それ以上クリックしても何も変わりません。 .... JQueryの部分と関係があると思いますが、動作させることができません:///

すべての助けに感謝します!!! よろしくお願いします!

4

3 に答える 3

0

私はsrc属性の編集の大ファンではありません。私は通常、画像を削除して(または読み込み中の画像に置き換えて)、新しい画像を追加して(そして読み込み中の画像を削除して)います。以下のコードは、画像を削除して新しい画像を追加する必要があります-バッファリング画像の置換のものをすべて見逃しました

 $("#reloadImg").click(function(){
               $.ajax({
                  url: 'getNewKCAPTCHA.php',
                  cache: false,
                  type: 'POST',  
                  async: false,
                  success: function(){
                     $("#captchaImg").remove();
                     $("#rowWithCaptcha td p").append('<img id="captchaImg" src="http://localhost/Captcha2/TestPages/TestPage3Q/getNewKCAPTCHA.php?" />');

                  }
               });
            });

それが役に立てば幸い

于 2012-11-08T15:39:14.123 に答える
0

これは、HTML5サポートと相互に関連している可能性があります。私は少し前に同じ問題を抱えていましたが、FFもIEもサポートしていないようです

$('whatever').click(function(){});

htmlタグのonclick="function()"で呼び出すと機能する可能性がありますが、機能するかどうかはわかりません

于 2012-11-08T15:34:15.877 に答える
0

仮定して

url: 'getNewKCAPTCHA.php',

http://localhost/Captcha2/TestPages/TestPage3Q/getNewKCAPTCHA.php?

実際には同じスクリプトであるため、2回呼び出す必要はありません。

この単純な方法を考えてみましょう(これは私が実際のプロジェクトで使用している作業方法です)。

$("#reloadImg").click(function(){
    var d = new Date ();
    var captcha = "http://localhost/Captcha2/TestPages/TestPage3Q/getNewKCAPTCHA.php?r=" + d.getTime ();
    $("#captchaImg").attr ("src", captcha);
});

http://jsfiddle.net/hGfgn/

よろしく

于 2012-11-08T16:05:55.563 に答える