繁体   English   中英

用ajax和codeigniter进行表单验证

[英]form validation with ajax and codeigniter

我想在HTML弹出窗口上的ci中使用ci中的表单验证库,并在客户端请求时向客户端显示错误(如果验证错误== True,则更新数据库中的行,并且如果验证错误= False,则向客户端显示字段错误)

我的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/');
        }
    }
}

ajax中的callbackData包含http状态代码200并且没有数据

您无法通过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/');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM