我正在尝试使用 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 版本应该支持这种用法。