Jquery .ajax () и валидатор формы codeigniter: почему codeigniter всегда возвращает true? - PullRequest
0 голосов
/ 28 февраля 2011


Я не понимаю, почему валидатор формы codeigniter всегда возвращает true. Для теста я проверяю, равно ли значение элемента псевдонима test. Я ввел test в элемент alias, а код jquery выполняет ajax. Я проверил значение поста на вкладке поста firebug и там написано: alias = test. Почему он возвращает истину, когда должен возвращать ложь? Любая помощь очень ценится. -Спасибо
кодовый код:

<?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;
            }
        }
    }
    }
}
?>

код запроса: $ (документ) .ready (function () { функция validateElement (formId, element, 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')
}); 

});

1 Ответ

2 голосов
/ 28 февраля 2011

Кажется, у вас есть функция alias check внутри 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;
            }
        }
    }
}

Вы должны иметь ее вне этого метода:

function validate_form() {}
function alias_check(){}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...