我试图以我的一种形式实现 reCAPTCHA,...但我使用 ajax 作为提交。 (更具体地说是原型(prototype) ajax.updater)
一旦我提交并检查了我的表单,我就尝试加载 reCAPCHTA 小部件(在我更新的 div 元素中),它基本上只是像这样调用一个 javascript 文件:
<script type="text/javascript" src="http://api.recaptcha.net/challenge?k=6Le6SwUAAAAAAIWm8wCRFd8SrI-H0R1Yx4Tkw2Ks"></script>
但是 JS 文件没有被读取?...我已经在 ajax.updater 中尝试了 evalScripts:true 和 evalJS:'force' 等的所有组合...但是我不认为我很清楚为什么 js 文件没有被处理:(
如果有人能阐明这个问题,我将不胜感激。
谢谢安德鲁
最佳答案
这并没有解决您的确切问题,但是“Dark Side of the Carton” ' 有一些用于通过 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
关于javascript - 将 reCAPTCHA 与 ajax 结合使用....javascript 加载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/593593/