我正在实现reCaptcha,我正在使用Ajax调用我的PHP页面来检查验证码的有效性,而无需刷新页面。
我有这个jQuery代码:
$.post('php/captcha.php', $('#captchaPost').serialize(), function(data){
if(data != "Valid")
{
$('#captchaError').show();
$captchaFlag = "Invalid";
}
else
{
$('#captchaError').hide();
$captchaFlag = "Valid";
}
});
这个post处理程序的PHP代码:
<?php
require_once('recaptchalib.php');
$privatekey = "1234567890";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_REQUEST["recaptcha_challenge_field"],
$_REQUEST["recaptcha_response_field"]);
if (!$resp->is_valid)
{
// What happens when the CAPTCHA was entered incorrectly
echo "Error";
}
else
{
echo "Valid";
}
?>
我使用Firebug检查了响应,即使我输入正确的Captcha,PHP脚本也会返回“Error”。根据服务器,表单似乎正确POST,虽然我没有看到如何检查表单中发布的内容。我没有使用PHP函数来构建reCaptcha表单;我从Google的文档中获取了HTML。有什么帮助吗?
答案 0 :(得分:1)
尝试使用此代码:
function validateCaptcha()
{
challengeField = $("input#recaptcha_challenge_field").val();
responseField = $("input#recaptcha_response_field").val();
var html = $.ajax({
type: "POST",
url: "php/captcha.php",
data: "recaptcha_challenge_field=" + challengeField + "&recaptcha_response_field=" + responseField,
async: false
}).responseText;
if(html != "Valid")
{
$('#captchaError').show();
$captchaFlag = "Invalid";
}
else
{
$('#captchaError').hide();
$captchaFlag = "Valid";
}
}
看起来你没有在jQuery中正确发送数据。
修改强> 还要确保在按钮上调用validateCaptcha()。例如:
onSubmit="javascript:validateCaptcha()"