2016-06-11 26 views
0

私はこのコードを調べて、ajaxで検証します。Codeigniter ajaxフォーム検証エラー

public function create(){ 


    $data = array('success' => false, 'messages' => array()); 

    $this->form_validation->set_rules('PROVINCE','Province Name','trim|required|max_length[30]|callback_if_exist'); 
    $this->form_validation->set_error_delimiters('<p class="text-danger"','</p>'); 

    if($this->form_validation->run($this)){ 

     $data['success'] = true; 
    }else{ 
     foreach ($_POST as $key => $value) { 
      # code... 
      $data['messages']['key'] = form_error($key); 
     } 
    } 

    echo json_encode($data); 
} 

そして、私のjavascriptがある:

私のコントローラがあるまず

<script> 
    $('#form-user').submit(function(e){ 
     e.preventDefault(); 

     var me = $(this); 

     // perform ajax 
     $.ajax({ 
      url: me.attr('action'), 
      type: 'post', 
      data: me.serialize(), 
      dataType: 'json', 
      success: function(response){ 
       if (response.success == true){ 
        alert('success'); 
       }else{ 
        $.each(response.messages, function(key, value) { 
         var element = $('#' + key); 

         element.closest('div.form-group') 
         .removeClass('has-error') 
         .addClass(value.length > 0 ? 'has-error' : 'has-success') 
         .find('.text-danger') 
         .remove(); 

         element.after(value) 

        }); 
       } 
      } 

     }); 


    }); 


</script> 

私else文であった場合:

  if (response.success == true){ 
       alert('success'); 
      }else{ 
       alert('failed'); 

       }); 

が、私はコードを置くとき:

$.each(response.messages, function(key, value) { 
         var element = $('#' + key); 

        element.closest('div.form-group') 
        .removeClass('has-error') 
        .addClass(value.length > 0 ? 'has-error' : 'has-success') 
        .find('.text-danger') 
        .remove(); 

        element.after(value) 

検証が失敗した場合、ボタンはもう機能しません。

+0

する変数$key

変更

$data['messages']['key'] 

をしたいPHPのループ内の文字列'key' * "ボタンが機能しない" をハードコーディングされています*適切な技術的問題の記述ではありません。サーバーから実際の応答 – charlietfl

答えて

1

あなたが実際に

$data['messages'][$key] 
+0

の手がかりを調べてください。それでおしまい!ありがとう! –

関連する問題