【问题标题】:Blank response from jQuery Ajax call to PHP scriptjQuery Ajax 调用 PHP 脚本的空白响应
【发布时间】:2012-08-15 19:02:46
【问题描述】:

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

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

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

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

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

我的期望是上面的 sn-p 应该返回一个简单的“真”或“假”的响应,但也许不是这样。

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

【问题讨论】:

  • 顺便说一句,我注意到很多人批评使用 Ajax 进行同步调用(呃,Ajax,我知道!)。欢迎任何解释为什么我希望我的表单提交是异步/非阻塞的。

标签: php ajax forms jquery


【解决方案1】:

您需要使用“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;
    ?>

【讨论】:

  • 天啊!我的愚蠢错误。我最近使用函数太久了。现在按预期工作。 :)
【解决方案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

【讨论】:

  • 是的,我现在才意识到我的错误。感谢您的回复。 :)
猜你喜欢
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-29
  • 2010-11-05
  • 1970-01-01
  • 2016-12-28
相关资源
最近更新 更多