2011-02-28 2 views
0


codeigniter 양식 검사기가 항상 true를 반환하는 이유를 알지 못합니다. 테스트의 경우 별칭 요소 값이 테스트와 같은지 확인합니다. 별칭 요소에 test를 입력하고 jquery 코드가 ajax를 실행합니다. 나는 firebug의 post tab에서 post 값을 검사했다 : alias = test 그러나 codeigniter 또한 true를 리턴한다. false를 반환해야하는 이유는 무엇입니까? 어떤 도움이라도 대단히 감사합니다. 고마워요
codeignitor 번호 :Jquery .ajax() 및 codeigniter 양식 검사기 : codeigniter가 항상 true를 반환하는 이유는 무엇입니까?

<?php 
class Validate_livestock extends Controller 
{ 
    //create a variable to be used for an array to pass back to the livestock form if there are errors. 
    var $validate_field; 

    function Validate_livestock() 
    { 
     parent::Controller(); 

     //echo 'species11: '.$fs; 

     //turn the validation_field variable into an array 
     $this->validate_field = $this->uri->uri_to_assoc(3); 

    } 

    function validate_form() 
    { 

     //load the form validation library 
     $this->load->library('form_validation'); 

     //set form validation rules 
     switch ($this->validate_field['field']){ 
     case "alias": 
      $this->form_validation->set_rules('alias', 'Alias', 'callback_alias_check', 'trim|xss_clean'); 
      //echo 'input: ' . $this->input->post('alias'); 
     break;  
     } 

     //see if the form validates 

     if ($this->form_validation->run() == FALSE) 
     { 
      //print_r($this->validate_field['field']); 
      $this->load->view('false'); 
      //echo $this->form_validation->run(); 
      //echo "Validator Successfully ran."; 
     } 
     else 
     { 
      //print_r($this->validate_field['field']); 
      $this->load->view('true'); 
      //echo $this->form_validation->run(); 
      //echo "Validator Unsuccessfully ran."; 
     } 

     function alias_check($str) 
     { 
      if ($str == 'test') 
      { 
       return FALSE; 
      } 
      else 
      { 
       return TRUE; 
      } 
     } 
    } 
    } 
} 
?> 

jQuery 코드 : $ (문서) .ready (함수() { 함수 validateElement (formId, 요소, errorContainer) {

$.ajax({ 
     type: 'POST', 
     cache: false, 
     url: "validate_livestock/" + "validate_form/field/" + element, 
     data: element+"="+$('#'+element).val(), 
     context: document.body, 
     dataType: 'html', 
     success: function(){ 
      alert(document.body) 
     } 
    }); 
} 

$('#alias').change(function(){ 
    validateElement('#add_livestock', 'alias', '#alias_error_1') 
}); 

}) ;

답변

2

당신은 당신은 그 방법을 외부로 가지고 있어야 validate_form method

function validate_form() 
    { 

     //load the form validation library 
     $this->load->library('form_validation'); 

     //set form validation rules 
     switch ($this->validate_field['field']){ 
     case "alias": 
      $this->form_validation->set_rules('alias', 'Alias', 'callback_alias_check', 'trim|xss_clean'); 
      //echo 'input: ' . $this->input->post('alias'); 
     break;  
     } 

     //see if the form validates 

     if ($this->form_validation->run() == FALSE) 
     { 
      //print_r($this->validate_field['field']); 
      $this->load->view('false'); 
      //echo $this->form_validation->run(); 
      //echo "Validator Successfully ran."; 
     } 
     else 
     { 
      //print_r($this->validate_field['field']); 
      $this->load->view('true'); 
      //echo $this->form_validation->run(); 
      //echo "Validator Unsuccessfully ran."; 
     } 

     function alias_check($str) 
     { 
      if ($str == 'test') 
      { 
       return FALSE; 
      } 
      else 
      { 
       return TRUE; 
      } 
     } 
    } 
} 

내부의 기능, alias check을 갖고있는 것 같다 :

function validate_form() {} 
function alias_check(){} 
+0

우수함! 고맙습니다! – dottedquad

관련 문제