我希望这不是重复;我读过的其他类似问题并没有帮助我解决问题。
我从我的PHP脚本的jQuery Ajax调用中收到一个空白的响应(即data =“”),用于验证用户提交的CAPTCHA值。我正在使用Cryptographp作为我的CAPTCHA,它按预期工作,所以我认为它很可能是我的Ajax调用或PHP脚本中的错误。
Firebug显示正确的POST值('code'是要测试的提交的CAPTCHA值):
code a
email a@a.com
emailtext a
firstname a
lastname a
phone
调用onsubmit的Ajax函数来确定是否提交表单:
function validateCaptcha()
{
// Assume an invalid CAPTCHA
var valid = false;
// The form containing the CAPTCHA value
var data_string = $('form#emailform').serialize();
// Make the Ajax call
$.ajax({
url: "captcha.php",
data: data_string,
type: "POST",
async: false,
success: function (data) {
if (data == "true")
{
valid = true;
}
alert ("data: " + data);
}
});
return valid;
}
captcha.php
<?
$cryptinstall="crypt/cryptographp.fct.php";
include $cryptinstall;
// Begin the session
session_start();
//Check if CAPTCHA values match
if(chk_crypt($_POST["code"]))
return true;
else
return false;
?>
我的期望是上面的片段应该返回一个简单的“真”或“假”的回复,但也许情况并非如此。
非常感谢任何指出我的错误的帮助!
答案 0 :(得分:4)
您需要使用“echo”而不是“return”,并将write作为字符串。 return用于返回函数的结果。
<?
$cryptinstall="crypt/cryptographp.fct.php";
include $cryptinstall;
// Begin the session
session_start();
//Check if CAPTCHA values match
if(chk_crypt($_POST["code"]))
echo "true";
else
echo "false;
?>
答案 1 :(得分:2)
从你的captcha.php
你没有回应/打印任何东西,所以它什么也没有返回。只需将您的return true;
和return false;
替换为echo。
浏览器只能在您从脚本中打印内容时收到某些内容。
if(chk_crypt($_POST["code"])) echo true; // 1
else echo false;// 0
或
if(chk_crypt($_POST["code"])) echo 'true'; // true
else echo 'false';// false