繁体   English   中英

无法评估AJAX调用的正确/错误返回

[英]Can't evaluate true / false return from AJAX call

我正在尝试使用AJAX实施ReCaptcha来验证它,以便在ReCaptcha失败时可以阻止页面提交。

这是我的JavaScript:

function verify_recaptcha(){
jQuery.post(
    'verify_recaptcha.php',
    {
        recaptcha_challenge_field: jQuery('#recaptcha_challenge_field').val(),
        recaptcha_response_field: jQuery('#recaptcha_response_field').val()
    },
    function(data){
        if(data == "true"){
            alert("ReCaptcha Verified");
        }
        else{
            alert(data);
        }
    }
   );
}

以及verify_recaptcha.php的内容

<?php
require_once('recaptchalib.php');
$privatekey = "-- my private key --";
$resp = recaptcha_check_answer ($privatekey,
                              $_SERVER["REMOTE_ADDR"],
                              $_POST["recaptcha_challenge_field"],
                              $_POST["recaptcha_response_field"]);

if (!$resp->is_valid) {
  echo "false";
} else {
  echo "true";
}
?>

问题是,如果recaptcha验证,我的测试Alert将显示“ true”(否则,则显示false),我认为这不可能。 它应该在if语句中评估数据==“ true”并显示“ ReCaptcha已验证”。

我在该主题上搜索的大多数内容都是问题,人们正在尝试从AJAX调用中返回一个值,我知道我无法这样做,并且不在此处执行。

我想念什么?

重新构造您的代码。 尝试,

PHP:

...
...

$json = array();

if (!$resp->is_valid) 
   $json['result'] = true;
else 
   $json['result'] = false;

header('Content-Type: application/json; charset=utf-8');
echo json_encode($json);


JS:

...
...

jQuery.post(
'verify_recaptcha.php',
{
    recaptcha_challenge_field: jQuery('#recaptcha_challenge_field').val(),
    recaptcha_response_field: jQuery('#recaptcha_response_field').val()
})
.done(function(response){

    console.log(response);

    if(response.result == true)
    {
        // Entered captcha is correct
    }
    else
    {
        // Entered captcha is incorrect
    }
});


说明:

1)始终返回布尔值true/false而不是字符串形式。
2)使用.done() 与您的代码没有太大区别,但是.done()使您的ajax调用代码更加清晰
3)始终打开console并尝试打印对象,然后查看输出是否符合预期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM