任何人都可以帮助如何使用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);
}
});
});
});
我的最新尝试仍然失败
答案 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');
}
});
});
});