Php 使用jQuery的ajax调用刷新验证码
我写了自己的php验证码脚本,带有jpeg头,所以我可以说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变量中是
<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());
});