我正在尝试使用AJAX版本的recaptcha。 Recaptcha.create()工作正常,但是当我尝试使用Recaptcha.ajax_verify()时,我收到了一个神秘的错误:
{
is_correct: false,
programming_error: 'Input error: c: Parameter signature was not set'
}
这是一个示例HTML文件,可以自己尝试(使用您自己的公钥):
<!DOCTYPE html>
<html>
<head>
<script src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
</head>
<body>
<div id="recaptcha_target"></div>
<input id="recaptcha_submit" type="button" value="Submit" />
<pre id="recaptcha_response"></pre>
<script>
$(document).ready( function () {
Recaptcha.create( '**YOUR_PUBLIC_KEY**', 'recaptcha_target', {
tabindex: 1,
theme: 'clean',
callback: Recaptcha.focus_response_field
});
$('#recaptcha_submit').click( function () {
Recaptcha.ajax_verify( function () {
$('#recaptcha_response').text( 'is_correct: '+arguments[0].is_correct+'\nprogramming_error: '+arguments[0].programming_error );
});
});
});
</script>
</body>
</html>
有没有人知道那个错误是什么?我看了一个美化版的recaptcha代码,它看起来像Recaptcha.ajax_verify()自己格式化验证请求。它只需要1个参数:一个回调函数。如果有一些我缺少的东西(例如私钥 - 我猜不应该在前端JS代码中),我看不出它会放在哪里。
我意识到我可以编写自己的PHP响应器来进行验证,但我想要一些完全客户端的东西。从它的外观来看,AJAX版本应该支持这种用法。