在jquery中使用Ajax表单进行验证码的最佳方法是什么?

时间:2009-08-11 20:04:53

标签: jquery ajax captcha

我正在使用ajax,json和jquery开发一个评论脚本。

除了最难的部分,我完成了大部分工作, 如果用户在X ammount of time中发布了大量注释,我的php脚本将在下面的javascript代码中返回一个“captcha”触发器,告诉它该用户需要输入验证码然后我们才会将注释发布到DB

下面你会看到我有3个返回值选项:成功,错误和验证码

当返回验证码时,我想在屏幕上打开一个弹出对话框并加载我的验证码脚本,到目前为止,一切都可以解决。

现在我需要让captcha脚本提交,不仅是captcha值,还有我的用户注释,所以我只需要用注释值填充隐藏的表单字段。很容易我还没有完成它。现在,如果用户获取错误的验证码值,则需要重新加载屏幕,但再次弹出验证码屏幕,并且仍然将评论隐藏在表单值中。这就是棘手的部分。

在阅读完我的计划并查看下面的代码后,您认为我走在正确的轨道上吗?有关更好方法的任何建议吗?

<script type="text/javascript">
$.ajax({
    type: "POST",
    url: "process.php",
    data: dataString,
    dataType: "json",
    success: function(data) {
       if (data.response === 'captcha') {
            //they are mass posting so we need to give them the captcha form
            // I can send the users sanitized comment through the captcha script somehow
            // 'data.comment' is holding the comment value
            jQuery.facebox(function() {
                // This opens up a facebox dialog on the screen and popolates it with the captcha image and script
                jQuery.get('captchabox.php', function(data) {
                    jQuery.facebox( '' + data + '')
                    data.comment;
                })
            })
       } else if (data.response === 'success') {
            // success append the sanitized-comment to the page
            $('#comments').prepend(data.comment);
       } else if (data.response === 'error') {
            // just an alert for testing purposes
            alert('sorry there was an error');
       };
    }
});
</script>

更新

经过深思熟虑似乎我需要让我的验证码也使用ajax,否则会有一个页面重新加载=(

1 个答案:

答案 0 :(得分:-1)

我最终这样做了,效果很好。 Recaptcha,其他人认为相关的问题是未知的