簡體   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