0

我希望这不是重复的;我阅读的其他类似问题并没有帮助我解决问题。

我从 jQuery Ajax 调用到我的 PHP 脚本收到一个空白响应(即 data = ""),用于验证用户提交的 CAPTCHA 值。我正在为我的验证码使用Cryptographp,它按预期工作,所以我认为这很可能是我的 Ajax 调用或 PHP 脚本中的错误。

Firebug 显示正确的 POST 值(“代码”是要测试的提交的验证码值):

code      a
email     a@a.com
emailtext a
firstname a
lastname  a
phone     

Ajax 函数调用 onsubmit 来判断是否提交表单:

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;
}

验证码.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;
?>

我的期望是上面的代码片段应该返回一个简单的“真”或“假”的响应,但也许情况并非如此。

任何指出我的错误的帮助将不胜感激!

4

2 回答 2

4

您需要使用“echo”而不是“return”并将其写入为字符串。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;
    ?>
于 2012-08-15T19:08:53.477 回答
2

从您captcha.php那里,您没有回显/打印任何内容,因此它什么也没有返回。只需将您的return true;and替换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
于 2012-08-15T19:09:24.380 回答