2012-08-15 94 views
0

我希望這不是重複的;我讀到的其他類似問題並不能幫助我解決問題。來自jQuery Ajax調用PHP腳本的空白響應

我收到從一個jQuery Ajax調用我的PHP腳本,用於驗證用戶提交的CAPTCHA值空白響應(即數據=「」)。我爲我的CAPTCHA使用了Cryptographp,並且它按預期工作,所以我認爲這很可能是我的Ajax調用或PHP腳本中的錯誤。

Firebug顯示正確POST值( '代碼' 是所提交的CAPTCHA值來測試):

code  a 
email  [email protected] 
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

順便說一句,我注意到很多人批評使得阿賈克斯同步調用(廢話,* A * JAX,我知道了!)。任何解釋爲什麼我希望我的表單提交是異步/非阻塞的,這是值得歡迎的。 – 2012-08-15 19:04:43

回答

4

您需要使用「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; 
    ?> 
+0

D'oh!愚蠢的錯誤在我身上。我剛剛在功能上工作了很久。現在按預期工作。 :) – 2012-08-15 19:10:53

2

從你captcha.php你不呼應/打印任何東西,所以它返回什麼。只需用回聲替換return true;return false;即可。

瀏覽器只能在您從腳本打印某些內容時收到一些東西。

if(chk_crypt($_POST["code"])) echo true; // 1 
else echo false;// 0 

if(chk_crypt($_POST["code"])) echo 'true'; // true 
else echo 'false';// false 
+0

是的,我剛剛意識到我的錯誤。感謝您的迴應。 :) – 2012-08-15 19:11:55

+0

不客氣:-) – 2012-08-15 19:12:28