Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让reCaptcha使用jQuery在Ajax上工作_Jquery_Ajax_Security_Recaptcha - Fatal编程技术网

让reCaptcha使用jQuery在Ajax上工作

让reCaptcha使用jQuery在Ajax上工作,jquery,ajax,security,recaptcha,Jquery,Ajax,Security,Recaptcha,我有一个表单,可以使用Ajax进行验证和发布,或者更具体地说,使用$.post() 在某一点上,有一个重演。当我没有使用$.post()而是以旧式方式发布(页面刷新)时,此表单运行良好,仅供参考 转换表单需要我将所有的$\u POST更改为$\u REQUEST。然而,这并不能解决reCaptcha问题,所以我将其保留原样。以下是registerPost.PHP中的reCaptcha PHP代码: require_once('recaptchalib.php'); $privatekey

我有一个表单,可以使用Ajax进行验证和发布,或者更具体地说,使用
$.post()

在某一点上,有一个重演。当我没有使用
$.post()
而是以旧式方式发布(页面刷新)时,此表单运行良好,仅供参考

转换表单需要我将所有的
$\u POST
更改为
$\u REQUEST
。然而,这并不能解决reCaptcha问题,所以我将其保留原样。以下是registerPost.PHP中的reCaptcha PHP代码:

  require_once('recaptchalib.php');
  $privatekey = "dropbeatsnotbombs";
  $resp = recaptcha_check_answer ($privatekey,
                            $_SERVER["REMOTE_ADDR"],
                            $_POST["recaptcha_challenge_field"],
                            $_POST["recaptcha_response_field"]);

 if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
echo "Error";
}
else {
   //post form
}
以下是处理表单过帐的jQuery:

$.post('php/registerPost.php', $('#registerPost').serialize(), function(data){
                if(data == "Error")
                {
                    $('#caErr').show();
                }
                else
                {
                    window.location.replace("//main page");
                }
            });
注意:reCaptcha似乎返回为false,因为当所有内容都正确填写时,表单将不会提交

我想做的是,如果reCaptcha输入错误,则显示一个错误,如果输入正确,则显示post,所有这些都是异步的


有什么帮助吗?

嗯。我需要阅读$.post()的API文档,但我的第一个猜测是,由于表单没有真正提交,所以没有填充$\u post数组,因此当您使用诸如
$\u post[“recaptcha\u challenge\u field”]
之类的值时,它只是一个空字段。再一次,我需要去核实一下,但这是我的直觉

编辑:

看来我错了。我将您所拥有的与API和我所拥有的旧脚本进行了比较,您所做的应该很好。我看到的唯一区别是您将此作为数据传递:

$('#registerPost').serialize()
鉴于我的脚本传递了以下信息:

$('#form').serializeArray()

可能就这么简单…

+1“dropbeatsnotbombs”?很好……:)你确定表格中的所有内容都有效吗??