javascript - 将 reCAPTCHA 与 ajax 结合使用....javascript 加载问题

标签 javascript ajax prototypejs recaptcha

我试图以我的一种形式实现 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 + "&amp;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/

相关文章:

c# - 一次触发多次的ajax调用

javascript - 如何使用 Prototype 自动调整文本区域的大小?

javascript - 为什么 "classic"哈希有用?

javascript - 查找 Javascript 数组中最长的单词

javascript - 在react中使用redux形成

javascript - 使用 jQuery 从文本变量中选择带有选择器的标签

javascript - 如何仅当鼠标悬停在元素上至少 1 秒时才触发 mouseover 事件?

javascript - 如何在未使用 set_modal(true) 打开 RadWindow 时禁用父页面

java - Struts 2 中的 Json 插件问题

php没有使用jquery发送数据