CodeIgniter,Ajax..如何使用insert_id()



对不起,我的英语,我希望你能理解我的问题。。。

在我的程序中,当您使用modal+表单向数据库(MySQL(提交新记录时,它会被绘制在数据表中,而无需刷新或充值实际页面,它会动态附加。

我需要做的是,在每个新记录中,用新数据的ID绘制/附加数据AND 2个按钮(1个用于删除该记录,1个用于更新它(。

我读到我可以使用insert_id((来获得最后插入的id,但我不知道如何使用它,也不知道如何在Ajax调用中处理结果。

有什么提示吗?我对编程很陌生。

谢谢你抽出时间。

编辑

我需要我在模态/表单中引入的数据(为此我使用了.serialize(((和在DB中生成的ID。。。我不知道如何使用模型/控制器返回的ID信息。

我的控制器里有这个:

public function nuevo_elemento_diccionario()
{
$this->load->helper('form');
$this->load->library('form_validation');
// Validation rules that I deleted for this post
if ($this->form_validation->run() === FALSE)
{              
$this->load->view("header");
$this->load->view("section-aside");
$this->load->view("vista_nuevo_elemento_diccionario", $datos);
$this->load->view("footer");
}
else
{
$last_id = $this->mod_diccionarios->nuevo_elemento_diccionario();
echo json_encode(array('last_id' => $last_id));
redirect('/diccionarios/lista_diccionarios');
}
}

型号:

public function nuevo_elemento_diccionario()
{
$datos = array(
'ELDI_Key' => $this->input->post('eldi_key'),
'ELDI_Display' => $this->input->post('eldi_display'),
'ELDI_SuDiccionario' => $this->input->post('eldi_sudiccionario'),
);
$this->db->insert('elementos_diccionario', $datos);
/* $ultima_id = $this->db->insert_id();*/
$last_id = $this->db->insert_id();
return  $last_id;
}

Javascript/Ajax(其中您可以看到var key=$('input[name="eldi_key"]'(.val((;使用它,是我需要使用ID来使用新ID进行删除和更新的地方(点击生成的按钮(:

function nuevo_elemento() 
{
var id =$('input[name="eldi_id"]').val();
var display = $('input[name="eldi_display"]').val();
var key = $('input[name="eldi_key"]').val();
key = key.split(" ").join("_").toLowerCase();
swal({
title: 'Añadir elemento',
text: "¿Quieres añadir este elemento?",
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Sí',
cancelButtonText: 'No'
}).then((result) => {
if (result.value) {
$.ajax({
type: "POST",
url: $("#base_url").attr("valor") + 
"diccionarios/nuevo_elemento_diccionario",
data: $("#formNuevoElementoDiccionario").serialize(),
success: function(data) {
console.log(data);
$('#Modal_Add').modal('hide');
$("#formNuevoElementoDiccionario").trigger("reset");
var html = 
'<tr>'+
'<td>' + key + '</td>' +
'<td>'+ display +'</td>'+
'<td>'+
'<span class="btn btn-default editar_elemento" 
id=' + key + ' value="' + key + '">' +
'<a href="'+$("#base_url").attr("valor") + 
"diccionarios/elemento_diccionario/"+key+'" title="Editar">' +
'<i class="material-icons">edit</i>' +
'</a>' +
'</span>' +
'</td>' + 
'<td>' +
'<span class="btn btn-default borrar_elemento" 
id="'+ key +'" value="'+ key +'">'+
'<i class="material- 
icons">delete_outline</i>'+   
'</span>'+
'</td>'+
'</tr>'
$('#tabla-diccionarios').append(html);
swal("Añadido", "Elemento añadido correctamente", 
"success");
$(".borrar_elemento").off();                        
evento_borrar_elemento();
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("Error: " + textStatus);
}
});
}
})
}

只有在将数据插入数据库后才能使用insert_id((。如果您需要控制器或js中的用户最后id,请尝试以下操作:

public function nuevo_elemento_diccionario()
{
$datos = array(
'ELDI_Key' => $this->input->post('eldi_key'),
'ELDI_Display' => $this->input->post('eldi_display'),
'ELDI_SuDiccionario' => $this->input->post('eldi_sudiccionario'),
);
$this->db->insert('elementos_diccionario', $datos);
$ultima_id = $this->db->insert_id();
return $ultima_id;
}

然后可以使用json_encode((将数据返回到Controller:中的js

public function nuevo_elemento_diccionario()
{
$this->load->helper('form');
$this->load->library('form_validation');
// Validation rules that I deleted for this post
if ($this->form_validation->run() === FALSE)
{              
$this->load->view("header");
$this->load->view("section-aside");
$this->load->view("vista_nuevo_elemento_diccionario", $datos);
$this->load->view("footer");
}
else
{
$last_id = $this->mod_diccionarios->nuevo_elemento_diccionario();
echo json_encode(array('last_id' => $last_id));
// i`m not sure that you need to use redirect
redirect('/diccionarios/lista_diccionarios');
}
}

在你的js编辑成功函数:

success: function(data) {
var result = JSON.parse(data);
var insert_id = result.insert_id;

相关内容

  • 没有找到相关文章