2012-02-12 86 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(){ 
});