2012-02-12 106 views
0

我试图使用jQuery,Ajax和使用CodeIgniter的验证JSON来验证表单,这是我已经试过:使用CodeIgniter的jQuery的AJAX后验证

这是我的控制器:

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()不返回任何东西,任何人都可以给我一个提示?谢谢

+0

如果您通过HTML表单发布数据到页面会发生什么?你看到任何文字吗? – fruchtose 2012-02-12 05:18:35

+0

任何你没有使用jQuery的原因[验证插件](http://bassistance.de/jquery-plugins/jquery-plugin-validation/)?你可以使用javascript代码的一小部分验证这个表单,而不需要AJAX .... – 2012-02-12 05:37:42

+0

@Madmartigan我会同意使用jQuery验证插件比这更好。但是,这个帖子不应该被低估。如果downvote是由于某种其他原因而道歉。 – user824294 2012-02-12 05:49:01

回答

2

jQuery是期待控制器返回一个JSON页面,但是控制器与一个普通的HTML页面响应。您应指定在头的输出格式中,笨的代码看起来是这样的:

$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

表单提交时验证触发器。
尝试提交表单。

$('.cadastrar_enviar').submit(function(){ 
});