Использование валидации codeigniter на посте jquery ajax - PullRequest
0 голосов
/ 12 февраля 2012

Я пытаюсь проверить форму, используя jquery, ajax и json, используя проверку codeigniter, вот что я пробовал:

это мой контроллер:

function cadastrar(){
    $this->load->library('form_validation');

    $this->form_validation->set_rules('nome', 'Nome', 'required|min_length[3]|max_length[15]');
    $this->form_validation->set_rules('sobrenome', 'Sobrenome', 'required|min_length[3]|max_length[15]');
    $this->form_validation->set_rules('senha', 'Senha', 'required|matches[confirmar]');
    $this->form_validation->set_rules('confirmar', 'Confirmação de senha', 'required');
    $this->form_validation->set_rules('email', 'Email', 'required|valid_email');

    if ($this->form_validation->run() == FALSE)
    {
        echo '{"mensagem": "Erro", "nome_erro": "' . form_error('nome') . '", "sobrenome_erro": "' . form_error('sobrenome') . '", "email_erro" : "' . form_error('email') . '", "senha_erro" : "' . form_error('senha') . '", "confirmar_erro" : "' . form_error('confirmar') . '" }';
    }
    else
    {
        echo '{"mensagem": "Registro com sucesso !", "nome_erro": "", "sobrenome_erro": "", "email_erro" : "", "senha_erro" : "", "confirmar_erro" : "" }';
    }
}

и это моя функция jquery:

$(document).ready(function(){
    $('.cadastrar_enviar').click(function(){
        var nome = $('.cadastro_nome').val();
        var sobrenome = $('.cadastro_sobrenome').val();
        var email = $('.cadastro_email').val();
        var senha = $('.cadastro_senha').val();
        var confirmar = $('.cadastro_confirmar').val();
        var mensagem = "";
        $("#loading").show();

        $.post('../index.php/usuario/cadastrar', {
            "nome" : nome,
            "sobrenome" : sobrenome,
            "email" : email,
            "senha" : senha,
            "confirmar" : confirmar
        }, function(data){          
                $('#loading').hide(500);
                $('span#nome_erro').html(data.nome_erro);
                $('span#sobrenome_erro').html(data.sobrenome_erro);
                $('span#email_erro').html(data.email_erro);
                $('span#senha_erro').html(data.senha_erro);
                $('span#confirmar_erro').html(data.confirmar_erro);
                alert(data.confirmar_erro);
                $('#mensagem_oi').html(data.mensagem).show(500);
            }, "json");
        });

    });

и я ничего не получаю об ошибках, form_error () ничего не возвращает, кто-нибудь может дать мне подсказку? спасибо

Ответы [ 2 ]

2 голосов
/ 08 июля 2012

jquery ожидает, что контроллер вернет страницу json, но контроллер отвечает обычной HTML-страницей.Вы должны указать формат вывода в заголовке, в Codeigniter код выглядит примерно так:

$this->output
->set_content_type('application/json')
->set_output(json_encode(array("mensagem"=> "Registro com sucesso !", "nome_erro"=> "", "sobrenome_erro"=> "", "email_erro" =< "", "senha_erro" => "", "confirmar_erro" => "")));

Посмотрите на класс вывода: http://codeigniter.com/user_guide/libraries/output.html

Таким образом, вы должны увидеть что-то, но яне знаю, сработает ли проверка.

0 голосов
/ 12 февраля 2012

Проверка CI запускается при отправке формы.
Попробуйте отправить форму.

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