需要帮助在代码点火器中创建自动填充

时间:2017-09-11 14:37:29

标签: ajax codeigniter autofill

任何人都可以帮助如何使用AJAX在codeigniter 3中创建自动填充表单字段,我已经浏览但没有成功进行中

控制器:

function autofill(){
        $id_pemesan = $this->input->post('id_pemesan', TRUE);
        $this->mod_marketing->autofill_by_id($id_pemesan,'pemesan');



            $data = array(
            'nama_depan' => nama_depan,
            'nama_belakang' => nama_belakang,
            'alamat' => alamat,
            'provinsi_kota' => provinsi_kota,
            'kode_pos' => kode_pos,
            'email' => email,
            'no_telp' => no_telp
            );

        echo json_encode($data);
    }

模特:

function autofill_by_id($id_pemesan,$table){

        return $this->db->get_where($table,array('id_pemesan', $id_pemesan));
    }

脚本:

<script>
$(function() {
        $("#id_pemesan").change(function(){
            var id_pemesan = $("#id_pemesan").val();

            $.ajax({
                url: '<?php echo site_url('marketing/autofill'); ?>',
                type: 'POST',
                dataType: 'json',
                data: {
                    'id_pemesan': id_pemesan
                },
                success: function (pemesan) {
                    $("#nama_depan").val(pemesan.nama_depan);
                    $("#nama_belakang").val(pemesan.nama_belakang);
                    $("#alamat").val(pemesan.alamat);
                    $("#provinsi_kota").val(pemesan.provinsi_kota);
                    $("#kode_pos").val(pemesan.kode_pos);
                    $("#email").val(pemesan.email);
                    $("#no_telp").val(pemesan.no_telp);

                }
            });
        });
    });

我的最新尝试仍然失败

1 个答案:

答案 0 :(得分:0)

更改控制器,以便检查响应是否应包含数据或错误。你实际上没有将行传递给数组,所以我猜这是你想要的:

function autofill()
{
    $id_pemesan = $this->input->post('id_pemesan', TRUE);
    $row = $this->mod_marketing->autofill_by_id($id_pemesan,'pemesan');

    if( $row )
    {
        $data = array(
            'nama_depan'    => $row->nama_depan,
            'nama_belakang' => $row->nama_belakang,
            'alamat'        => $row->alamat,
            'provinsi_kota' => $row->provinsi_kota,
            'kode_pos'      => $row->kode_pos,
            'email'         => $row->email,
            'no_telp'       => $row->no_telp
        );

        echo json_encode($data);
    }

    // No rows, or there was more than one row
    else
    {
        echo json_encode(array('error' => 'No rows, or there was more than one row'));
    }
}

更改模型以检查行:

function autofill_by_id( $id_pemesan, $table )
{
    $query = $this->db->get_where($table,array('id_pemesan', $id_pemesan));

    return $query->num_rows() == 1
        ? $query->row()
        : NULL;
}

修改JS以便检查错误:

$(function() {
    $("#id_pemesan").change(function(){
        var id_pemesan = $("#id_pemesan").val();

        $.ajax({
            url: '<?php echo site_url('marketing/autofill'); ?>',
            type: 'POST',
            dataType: 'json',
            data: {
                'id_pemesan': id_pemesan
            },
            success: function (pemesan) {
                if( permesan.error ){
                    alert( permesan.error );
                }else{
                    $("#nama_depan").val(pemesan.nama_depan);
                    $("#nama_belakang").val(pemesan.nama_belakang);
                    $("#alamat").val(pemesan.alamat);
                    $("#provinsi_kota").val(pemesan.provinsi_kota);
                    $("#kode_pos").val(pemesan.kode_pos);
                    $("#email").val(pemesan.email);
                    $("#no_telp").val(pemesan.no_telp);
                }
            },
            error: function(){
                alert('error 2');
            }
        });
    });
});