这并不能解决您的确切问题,但是'纸箱的阴暗面 http://www.darksideofthecarton.com/2008/12/15/validating-recaptcha-with-jquery-and-ajax/comment-page-1/' 有一些通过 jQuery AJAX 验证 reCAPTCHA 的优秀代码,这可能会有所帮助。
总之:
添加以下 JavaScript:
$(function() {
function validateCaptcha() {
var challengeField = $('input#recaptcha_challenge_field').val(),
responseField = $('input#recaptcha_response_field').val();
// alert(challengeField);
// alert(responseField);
// return false;
var html = $.ajax({
type: 'POST',
url: 'ajax.recaptcha.php',
data: "recaptcha_challenge_field=" + challengeField + "&recaptcha_response_field=" + responseField,
async: false
}).responseText;
if (html.replace(/^\s+|\s+$/, '') == "success") {
$('#captchaStatus').html(' ');
// Uncomment the following line in your application
return true;
} else {
$('#captchaStatus').html(
'Your captcha is incorrect. Please try again'
);
Recaptcha.reload();
return false;
}
}
// Modified as per comments in site to handle event unobtrusively
$('#signup').submit(function() {
return validateCaptcha();
});
});
然后添加 ajax.recaptcha.php 文件,其中:“如果验证码匹配,则仅输出“成功”一词;如果失败,则输出一条消息和 reCaptchta 的响应。这很重要,因为我们正在 validateCaptcha 中查找“成功”一词( ) 功能。”
require_once('/inc/recaptchalib.php');
$publickey = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'; // you got this from the signup page
$privatekey = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$resp = recaptcha_check_answer(
$privatekey,
$_SERVER['REMOTE_ADDR'],
$_POST['recaptcha_challenge_field'],
$_POST['recaptcha_response_field']
);
if ($resp->is_valid) {
?>success< ?
} else {
die(
"The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")"
);
}
该示例是用 PHP 编写的,但我很容易对其进行了修改,以便与 Zope/Python 一起使用