0

好的,这很吓人......我正在尝试重新加载在服务器端生成的验证码图像,我不想为此重新加载整个页面,因此我必须使用 AJAX。所以我要做的是首先在服务器端(使用 AJAX)触发一个 php 文件,它会更新所有需要的东西,这样我就可以拥有一个新的验证码图像。然后,当这完成后,我只需更新图像 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?");
              }
           });
        });

  • 文件二:

PHP:kcaptcha.php 是所有验证码魔法发生的地方 :) 所以如果你只是在浏览器中打开这个 php 文件,你就会得到验证码图像本身。如果您重新加载页面,图像每次都会更改......

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

所以现在奇怪的是,整个事情(AJAX 调用和图片更新)在新的 chrome 浏览器上工作得很好,但是当我用 FFOX 或 IE 尝试它时,它只工作一次,任何进一步的点击都不会改变任何东西。 ....我认为它与 JQuery 部分有关,但我无法让它工作:///

每一个帮助表示赞赏!提前谢谢!

4

3 回答 3

0

这可能与 HTML5 支持有关。我不久前遇到了同样的问题,似乎FF和IE都不支持

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

但如果你在 html-tag 中使用 onclick="function()" 调用它,它可以工作,但我不知道它是否工作

于 2012-11-08T15:34:15.877 回答
0

假如说

url: 'getNewKCAPTCHA.php',

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

实际上是同一个脚本,没有必要调用它们两次。

考虑这个简单的方法(这是我在实际项目中使用的工作方法):

$("#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 回答
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 回答