2017-09-30 18 views
2

htmlポップアップでフォーム検証ライブラリを使用し、クライアントの要求時にクライアントにエラーを表示したい場合は、検証エラー== trueデータベースの真の更新行、検証エラーの場合= Falseクライアントにフィールドエラーを表示するajaxとcodeigniterを使用したフォーム検証

私のhtmlポップアップコード:

<div class="row"> 
    <div class="form-group col-lg-6"> 
     <label class="col-sm-4 control-label">tarh</label> 
     <div class="col-sm-8 control-label"> 
      <input type="text" name="modal_tarh" id="modal_tarh" class="form-control"> 
     </div> 
    </div> 

    <div class="form-group col-lg-6"> 
     <label class="col-sm-3 control-label">agreement number</label> 
     <div class="col-sm-6 control-label"> 
      <input type="text" name="modal_agreement_number" id="modal_agreement_number" class="form-control"> 
     </div> 
    </div> 
</div> 
<button type="button" class="btn btn-info" id="edit_agreement">edit</button> 

Ajaxコード:

$(document).ready(function() { 

    $("#edit_agreement").click(function() { 
     var String_Url = "address"; 
     var String_Method = "POST"; 
     data_send = { 

      'f1':$("#modal_tarh").val(), 
      'f2':$("#modal_agreement_number").val() 
     }; 
     $.ajax({ 
      url:String_Url, 
      type:String_Method, 
      data:data_send, 
      contentType: 'application/json', 
      success:function(callbackData, status, xhr){ 
       alert(callbackData) 
       console.log(callbackData) 

      }, 
      error:function(xhr, status, err){ 

       alert(xhr.status); 
      } 
     }); 
    }); 

}); 

CodeIgniterのコントローラ

AJAXで
<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Portal extends My_controller 
{ 

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

     $config = array(
      array(
       'field' => 'modal_tarh', 
       'label' => 'tarh', 
       'rules' => 'required', 
       'errors' => array 
       (
        'required' => 'pls fill %s .', 
       ) 
      ), 
      array(
       'field' => 'modal_agreement_number', 
       'label' => 'agreement number', 
       'rules' => 'required', 
       'errors' => array 
       (
        'required' => 'pls fill %s .', 
       ) 
      ) 
     ); 

     $this->form_validation->set_rules($config); 

     if ($this->form_validation->run() == FALSE) 
     { 
      echo validation_errors(); 
     } 
     else 
     { 
      redirect('admin/portal/'); 
     } 
    } 
} 

callbackDataは、HTTPステータスコード200およびデータなし

+2

あなたはAJAX呼び出しでサーバーからリダイレクトを行うことはできません。 [回避策については、この回答を参照してください](https://stackoverflow.com/a/19762782/3585500) – ourmandave

答えて

0

あなたはAJAX呼び出しを経由してそのようなリダイレクトを行うことはできませんが含まれています。

変更

redirect('admin/portal/'); 

echo 'Success'; 

したり、あなたが本当に成功した場合に、AJAXリクエストをリダイレクトしたい場合は、その後、

echo base_url('admin/portal/'); 

を行うと、あなたのAjaxのリクエストで:

success:function(callbackData, status, xhr){ 
    window.location = callbackData; 
}, 

また、あなたのコントローラは、AJAXなどのような非AJAXリクエストの両方を処理することになります:

if ($this->input->is_ajax_request()) { 
    echo base_url('admin/portal/'); 
} else { 
    redirect('admin/portal/'); 
} 
関連する問題