2012-02-08 26 views
0

錯誤PHP返回到AJAX這個工程:查找JQuery的

$.ajax({ 
      type: 'POST', 
      url: 'register.php', 
      data: {captcha: captcha 
      }, 

      success: function() { 
      $('#loading').hide(); 
      $('#success').fadeIn(); 
      } 
      error: function() { 
      $('#loading').hide(); 
      $('#captcha').fadeIn(); 
      $('#catErrorB').fadeIn(); 
      } 

});  

發送的驗證碼響應PHP,如果輸入正確,你可以註冊。問題是,如果你不正常地輸入你的驗證碼,JQuery仍然運行成功運行的函數,儘管PHP運行了一個「死亡」並且什麼也沒做。

在PHP中,如果輸入的驗證碼不正確是做這個

if (!$resp->is_valid) { 
      die ("false"); 
    } 

    else 

    { 
    register 
    } 

如何要求PHP吐出來,所以我可以做類似的錯誤?

success: function(find error) { 
     if(error == "false") 
     { 
     $('#loading').hide(); 
    $('#captcha').fadeIn(); 
    $('#catErrorB').fadeIn(); 
     } 
     else 
     { 
     $('#loading').hide(); 
     $('#success').fadeIn(); 
     } 
     } 

編輯!: 有了您的幫助繼承人是什麼樣子,現在,它的作品太棒了!

$.ajax({ 
      type: 'POST', 
      url: 'register.php', 
      dataType: "json", 
      data: { 
       challenge: challenge, 
       response: response, 
       zip: zip 
      }, 

      success: function(result) { 
      if (!result.success) { 
      $('#loading').hide(); 
      $('#captcha').fadeIn(); 
      $('#catErrorB').fadeIn(); 
      } 
      else { 
      $('#loading').hide(); 
      $('#success').fadeIn(); 
    } 
} 




});   

和PHP

if (!$resp->is_valid) { 
    $response = array(success => false); 
    echo json_encode($response); 

    } 

    else 
    { 

$response = array(success => true); 
echo json_encode($response); 

你們大家是最酷的。我曾經做過的第一個JQuery,它非常出色。這個網站的規則!

回答

1

PHP:

if (!$resp->is_valid) { 
    $response = array(success => false); 
    echo json_encode($response); 
} 
else { 
    $response = array(success => true); 
    echo json_encode($response); 
} 

的jQuery:

success: function(result) { 
    if (!result.success) { 
     // Wrong input submitted .. 
    } 
    else { 
     // Correct input submitted .. 
    } 
} 
+2

他還需要告訴$ .ajax現在返回json它不是 – thenetimp 2012-02-08 12:24:51

+0

我可以通過簡單地做到這一點嗎? $ .ajax({type:'POST', url:'register。php', cache:false, dataType:「json」, data:{captcha:captcha}, – user1053263 2012-02-08 12:42:29

2

我不會使用成功/失敗。即使腳本死亡,它仍然會返回200成功到你的ajax呼叫。

使用JSON返回取決於它是否是一個成功響應和解析,並用正確的邏輯

<?php 

if ($resp->is_valid) { 
    echo json_encode(array('status' => 'true')); 
} else { 
    echo json_encode(array('status' => 'false')); 
} 

?> 

繼續然後你就可以分析您的AJAX調用的響應。請記住,如果您致電die('false');,它仍然會將成功消息返回給您的ajax函數。

+1

正如有人指出的那樣,你需要告訴你的Ajax調用,這是JSON,或者相反,使用JS解析器像json2.js解析迴應。 – 2012-02-08 12:26:20

+0

我對JQuery,AJAX和Javascript很陌生。以前沒有聽說過JSON。在JQuery網站上閱讀它。 (函數(){alert(「complete」))函數(){alert(「second success」);}) .error(function(){alert(「error」);}) ;}); 看起來我會用這些。 – user1053263 2012-02-08 12:31:03

+1

JSON:Javascript對象表示法 - 一種更現代且可接受的方法,用於數據結構的ajax和其他對象定義方法。 (比XML更好,前者)。如果您在Ajax通道中發生意外錯誤(例如404,500錯誤等),則會觸發錯誤函數。 – 2012-02-08 12:33:54