jQuery Ajax调用PHP脚本的空白响应

时间:2012-08-15 19:02:46

标签: php ajax forms jquery

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

我从我的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;
?>

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

非常感谢任何指出我的错误的帮助!

2 个答案:

答案 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