【发布时间】:2012-03-02 21:45:19
【问题描述】:
我的意思是,如果我检查第一个客户的输入并且没问题,那么对同一输入的第二次检查总是错误的...... 这是为什么呢?
我真的需要检查两次(一次用于客户端验证,第二次用于服务器端验证)
提前致谢!!!
编辑
澄清:
如果用户的输入正常并且 recaptcha 返回 true(我通过 ajax 向服务器发送请求到 recaptcha 的服务器),则表单正在提交并通过 POST 发送 2 个变量:recaptcha_challenge_field 值和 recaptcha_response_field 值(已经检查过),然后我的服务器要求 recaptcha 的服务器再次检查这两个值以进行服务器端验证。
jQuery 代码:
$("#form_id").find("button").click(function(){
var c = $("#recaptcha_challenge_field").val(),
r = $("#recaptcha_response_field").val();
$.ajax({
url: "/ajax/captcha?challenge=" + c + "&response=" + r,
dataType: "json",
success: function(data){
if(data['is_valid']){
$.ajax({
url: "/ajax/captcha?challenge=" + c + "&response=" + r,
dataType: "json",
success: function(data){
if(data['is_valid']){
alert('OK');
}else{
alert('FAILED');
}
}
});
}else{
Recaptcha.reload();
}
}
});
return false;
});
因此,正如您所见,有两个完全相同的操作具有不同的结果(它只提醒FAILED)。
【问题讨论】:
-
这是因为一旦 RECAPTCHA 已经为生成的 RECAPTCHA 生成了成功消息。您将需要找到另一种方法来完成此操作。您可能会以错误的方式处理此问题。
-
@BarryChapman - 我终于明白你在 Session 中存储成功变量是什么意思,而不是在服务器端验证中使用它)))非常感谢!
-
非常欢迎,我很高兴你把它整理好了!