Php 使用jQuery的ajax调用刷新验证码

Php 使用jQuery的ajax调用刷新验证码,php,ajax,captcha,Php,Ajax,Captcha,我写了自己的php验证码脚本,带有jpeg头,所以我可以说 <img src="captcha.php"> 但是这当然没有意义,我需要做一个ajax调用。 你们建议我怎么做 另外,我也试过了 $.ajax({ url: "captcha.php", success: function(result) { $("#captcha").attr("src",result); } }); 将实际CAPTHCHA字符串存储在_SESSION变量中是

我写了自己的php验证码脚本,带有jpeg头,所以我可以说

<img src="captcha.php">
但是这当然没有意义,我需要做一个ajax调用。 你们建议我怎么做

另外,我也试过了

$.ajax({
    url: "captcha.php",
    success: function(result) {
        $("#captcha").attr("src",result);
    }
});

将实际CAPTHCHA字符串存储在_SESSION变量中是有意义的,但您应该在URL中明确指定状态:

$.ajax({
    url: "captcha.php?generateNew",
    success: function(result) {
        $("#captcha").attr("src","captcha.php?foo="+Math.random());
    }
});
在php文件中:

if(isset($_GET['generateNew']){
    $_SESSION['captchaString'] = generateCaptchaString();
}else{
    dumpCaptchaImage();
}

第一种方法对我来说很有意义:

$("#refresh").click(function() {
    $("#captcha").attr("src","captcha.php?r=" + Math.random());
});
我假设captcha.php所做的唯一事情就是将captcha值存储在会话变量中,并在每次访问时输出captcha图像


因此,当您再次设置图像的src并向其添加查询字符串变量时,将再次向服务器脚本captcha.php发送请求,然后服务器脚本将重新生成captcha并将新值存储在会话变量中。

也许,第一次尝试,在php脚本的url中添加一个查询字符串可以替代吗?嗯,第一种方法的问题是,在我做任何事情之前,php是在服务器端运行的,因此在页面加载之后调用php脚本根本不起作用。如果我能像第二个例子那样找到一种使用ajax的方法,它可能会工作……让captcha生成脚本在附加随机查询变量的基础上输出完整的无缓存头套件,以尽可能确保每次都获取图像的新副本。
$("#refresh").click(function() {
    $("#captcha").attr("src","captcha.php?r=" + Math.random());
});