2012-04-20 41 views
6

Xin chào các bạn tôi chỉ muốn hỏi tại sao yêu cầu ajax của tôi không nhận được một chuỗi FALSE (nó sẽ nhận được thông báo lỗi từ bộ điều khiển).nhận lỗi xác thực thông qua jquery ajax và codeigniter

Dưới đây là đoạn điều khiển

function ajax_verify(){ 
    $this->form_validation->set_rules('username', '', 'max_length[25]|min_length[4]|trim|required|xss_clean'); 
    $this->form_validation->set_rules('email', '', 'valid_email|required|trim|xss_clean'); 

    if($this->form_validation->run()==FALSE){ 
      $errors = $this->form_validation->error_array(); 
      echo json_encode($this->form_validation->error_array()); 
    }else{ 
      echo "Success!"; 
     } 

    } 

tôi mở rộng thư viện để có được các thông báo lỗi (Nó hoạt động hoàn toàn tốt đẹp trong xác nhận php)

class MY_Form_validation extends CI_Form_validation{ 


function __construct(){ 
    parent::__construct(); 
} 

function error_array(){ 
    if(count($this->_error_array)===0){ 
     return FALSE; 
    }else{ 
     return $this->_error_array; 
    } 
} 

function get_tae(){ 
    return "TAE!"; 
} 
} 

và kéo dài quan điểm và jquery ajax mã (Trả về sai thay vì các lỗi).

 <!DOCTYPE HTML> 
    <html> 
    <head> 
      <meta charset="utf-8"> 
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> 
     <title>Title</title> 
    <body> 

    <?php //echo validation_errors('<div class="error">', '</div>');?> 
    <?php echo form_open('ajax/ajax_verify', array('id'=>'my_form'));?> 
    <?php echo form_label('Username'); ?> 
    <?php echo form_input('username', '', array('id' => 'username'));?> 
    <?php echo form_label('Email Address'); ?> 
    <?php echo form_input('email', '', array('id' => 'email')); ?> 
    <?php echo form_submit('submit', 'Submit'); ?> 
    <?php echo form_close();?> 

    <script type="text/javascript"> 
    $(function(){ 
      $('#my_form').submit(function(e){ 
       $.get('ajax_verify', function(data){ 
        $('#contents').append(data); 
       }, 'json') ;     
       e.preventDefault(); 
      }) 


     }); 
      </script> 
+1

Điều này có đúng không? '($ this -> _ error_array)' –

+0

Tôi nghĩ rằng nó là làm việc của nó trong php xác nhận, có thể vấn đề là trong mã jquery của nó nhận được chuỗi sai thay vì thông báo lỗi như thế này {"username": " "," email ":" Trường email là bắt buộc. "} – tastebuds

Trả lời

3

của nó:

echo json_encode(validation_errors()); 

HOẶC - riêng

$arr = array(
    'field_name_one' => form_error('field_name_one'), 
    'field_name_two' => form_error('field_name_two') 
); 

echo json_encode($arr); 
+0

Tôi đã thử nó, nhưng .. kết quả tương tự, tôi không biết có thể vấn đề là trên mã ajax của tôi luôn luôn nhận được đầu ra sai. – tastebuds

6

Hãy thử điều này. Nó sẽ hoạt động tốt.

Trong điều khiển Thêm hai phương pháp này

public function CreateStudents() { 

     $this->load->helper('form'); 

     $data['title'] = "Create Students Page"; 
     $data['success'] = ""; 
     $this->load->view('templates/header', $data); 
     $this->load->view('createstudents', $data); 
     $this->load->view('templates/footer', $data); 

    } 

    public function CreateStudentsAjax() { 

     $this->load->helper('form'); 
     $this->load->library('form_validation'); 
     $this->form_validation->set_error_delimiters('', ''); 

     $this->form_validation->set_rules('roll', 'Roll Number', 'required'); 
     $this->form_validation->set_rules('name', 'Name', 'required'); 
     $this->form_validation->set_rules('phone', 'Phone', 'required'); 

     if ($this->form_validation->run()) { 

      $this->welcome_model->InsertStudents(); 
      echo json_encode("Oks"); 
     } else { 

      $data = array(
       'roll' => form_error('roll'), 
       'name' => form_error('name'), 
       'phone' => form_error('phone') 
      ); 

      echo json_encode($data); 
     } 
    } 

Trong Xem Thêm hình thức DIV tên "mesage"

<div id="message"> 


     </div> 

     <?php echo form_open('welcome/CreateStudentsAjax'); ?> 

     <label for="roll">Student Roll Number</label> 
     <input type="text" id="txtRoll" value="" name="roll"/> 

     <label for="Name">Students Name</label> 
     <input type="text" id="txtName" value="" name="name"/> 

     <label for="Phone">Phone Number</label> 
     <input type="text" id="txtPhone" value="" name="phone"/> 

     <input type="submit" name="submit" value="Insert New Students" /> 

     <?php echo '</form>'; ?> 

Bây giờ các kịch bản chứa

<script type="text/javascript"> 

      $(document).ready(function(){ 

       $('form').submit(function(){ 
        //alert('ok');  
        $.ajax({ 
         url:this.action, 
         type:this.method, 
         data:$(this).serialize(), 
         success:function(data){ 
          var obj = $.parseJSON(data); 

          if(obj['roll']!=null) 
          {        
           $('#message').text(""); 
           $('#message').html(obj['roll']); 
           $('#message').append(obj['name']); 
           $('#message').append(obj['phone']); 
          } 
          else 
          {        
           $('#message').text(""); 
           $('#message').html(obj); 
          } 

         }, 
         erro:function(){ 
          alert("Please Try Again"); 
         }       
        }); 
        return false; 
       });       
      }); 

     </script> 
+0

Điều này rất hữu ích. Nên được đánh dấu là câu trả lời đúng. –

Các vấn đề liên quan