好的,这很吓人......我正在尝试重新加载在服务器端生成的验证码图像,我不想为此重新加载整个页面,因此我必须使用 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 部分有关,但我无法让它工作:///
每一个帮助表示赞赏!提前谢谢!