0

これが重複していないことを願っています。私が読んだ他の同様の質問は、私の問題を解決するのに役立ちませんでした。

ユーザーが送信した CAPTCHA 値を検証するために使用される PHP スクリプトへの jQuery Ajax 呼び出しから、空白の応答 (つまり、data = "") を受け取りました。CAPTCHA にCryptographpを使用していますが、期待どおりに動作するため、Ajax 呼び出しまたは PHP スクリプトのエラーである可能性が高いと考えています。

正しい POST 値を示す Firebug (「コード」は、テストするために送信された 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;
}

キャプチャ.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;
?>

上記のスニペットは単に「true」または「false」の応答を返すはずですが、そうではない可能性があります。

私のエラーを指摘する助けがあれば大歓迎です!

4

2 に答える 2

4

「return」の代わりに「echo」を使用する必要があり、文字列として書き込みます。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;andreturn 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 に答える