2017-09-30 59 views
2

我想在html弹出窗体的ci中使用表单验证库,并在客户端请求时向客户端显示错误,如果验证错误==数据库中的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); 
      } 
     }); 
    }); 

}); 

笨控制器

<?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在AJAX包含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/'); 
}