javascript - 在codeigniter中从ajax解析数组多维到控制器?
问题描述
我有一个动态表,我想通过 ajax 发送控制器。我有这样的代码ajax:
$(".save").click(function(e){
var items = new Array();
$("#list-item tr.item").each(function () {
$this = $(this)
var ref_item_id = $this.find("#ref_item_id").val();
var ref_pic_id = $this.find("#ref_pic_id").val();
var price= $this.find("#price").val();
var qty= $this.find("#qty").val();
items.push({ ref_item_id : ref_item_id, ref_pic_id : ref_pic_id, price: price, qty : qty});
});
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: '<?php echo base_url("transac/save")?>',
dataType: "json",
data: JSON.stringify({'items': items }),
success: function (data) {
var obj = $.parseJSON(data);
alert(obj.lenth);
},
error: function (result) { alert(result); }
});
})
现在,如何在控制器中获取数据并保存在表数据库中。我的控制器是这样的:
public function penjualan_save(){
$items = $this->input->post("items");
// next code ???
}
我希望你能帮助我。谢谢
解决方案
首先,您不需要 JSON.stringify({'items': items }),只需使用:
data: {'items': items },
在您的控制器中,只需创建一个模型并将您的帖子数据传递给它,例如:
public function penjualan_save(){
$items = $this->input->post("items");
$this->load->model('model_name');
$this->model_name->insert($items);
}
那么您需要为您的模型定义一个函数,如下所示:
public function insert($data)
{
// if you didn't call database library in autoload.php
$this->load->database();
$this->db->insert_batch('mytable', $data);
}
推荐阅读
- java - S3 Presigned URL - Content Desposition 中提供的用于生成 Presigned URL 的文件名,下载时出错
- hive - Hive Query 在 where 子句中不允许 >=
- php - Laravel 护照在 localhost 上工作,但不在 heroku 上
- javascript - 用 js 和增量符号 (++) 克隆一个项目,我的双增量错误 i
- python - Pandas:根据 if-else 语句和来自另一个数据帧的值在数据帧中创建列
- .net-core - 连续作业队列在关闭前完成作业
- angular - Angular - 在使用哈希更改 URL 后阻止 ngOnInit 调用
- python - Plotly Sankey:为什么节点放错了位置?
- r - 添加或删除文本输入行
- python - 与 1 的补码二进制表示混淆