2013-10-13 45 views
1

如果數據爲空,我想返回true,如果數據不爲空,則返回false。如果數據爲空,則繼續使用表單操作,否則停留在當前頁面。如何返回數據響應ajax的真或假功能?

代碼是:

<script type="text/javascript"> 
    function error() 
    { 
     var response = false; 
     $.ajax({ 
      url: BASE_URL + 'auth/validateForm', 
      type: 'POST', 
      data: { 
       surname: $("#r-surname").val() 
      }, 
      dataType: "json", 
      success: function(data) { 
       if(data.surname) 
       { 
        $('#error_surname').html(data.surname); 
        response = false; 
       }else{ 
        $('#error_surname').html(''); 
        response = true; 
       } 

      }, 
      error: function(data) { 
         return false; 
      } 
     }); 
     alert(response); 
      return response; 
    } 

</script> 

<form action="{$BASE_URL}contul-meu" method="post" name="registration" onsubmit="return error()"> 
         <table>        
          <tr> 
           <td> 
            <label for="r-surname">Prenume*</label> 
           </td> 
           <td> 
            <input type="text" class="text" id="r-surname" name="surname" value="{$user['surname']}"/> 
           </td> 
           <td><small id="error_surname" class="err"></small></td> 
          </tr> 
         </table> 
</form> 

PHP:

public function validateForm() 
{ 
    $surname = $this->input->post('surname'); 
    $data = array(); 
    if(strip_tags($surname) == '') 
    { 
     $data['surname'] = 'Prenumele este invalid!'; 
    } 

    echo json_encode($data); 
} 

VAR響應只是false.How做出迴應真,如果沒有錯誤?

回答

-1

其實檢查返回是空還是空。

success: function(data) { 
       if((data != null || data != "") && data.hasOwnProperty("surname")) 
       { 
        $('#error_surname').html(data.surname); 
        response = false; 
       }else{ 
        $('#error_surname').html(''); 
        response = true; 
       } 
0

添加ID到窗體

<form id="registration".. 

$("#registration").submit(function(e){ 
    $.ajax({ 
     url: BASE_URL + 'auth/validateForm', 
     type: 'POST', 
     data: { 
      surname: $("#r-surname").val() 
     }, 
     dataType: "json", 
     success: function(data) { 
      if(data.surname) 
      { 
       $('#error_surname').html(data.surname); 
       //prevent form submission 
       e.preventDefault(); 
      }else{ 
       $('#error_surname').html(''); 
       //no errors, it will continue with form submission 
      } 
     }, 
     error: function(data) { 
        e.preventDefault(); 
     } 
    }); 
}); 
+0

雖然使用JS而不是HTML綁定事件處理程序是很好的做法,但這根本無助於解決問題。 – Quentin

2

不能返回一個嵌套的AJAX功能的結果。 JavaScript將執行並繼續執行 - 但是,在函數返回後,發出請求的延遲將會發生。

最好的事情是鏈接你的事件。只需創建另一個接受true或false值的函數,並將您的邏輯包含在那裏。

<script type="text/javascript"> 
function error() 
{ 
    var response = false; 
    $.ajax({ 
     url: BASE_URL + 'auth/validateForm', 
     type: 'POST', 
     data: { 
      surname: $("#r-surname").val() 
     }, 
     dataType: "json", 
     success: function(data) { 
      if(data.surname) 
      { 
       $('#error_surname').html(data.surname); 

       response = false; 
       doSomethingBasedOnResponse(false); 
      }else{ 
       $('#error_surname').html(''); 
       response = true; 
       doSomethingBasedOnResponse(true); 
      } 

     }, 
     error: function(data) { 
        return false; 
      doSomethingBasedOnResponse(false); 
     } 
    }); 

} 

function doSomethingBasedOnResponse(value){ 
    if(value){ 
     alert('yes'); 
    }else{ 
     alert('no'); 
    } 
} 

</script>