var rows_selected = [];
var rowId = data[0]; // conten [24,25,26,27 etc]
var namaFile = data[4]; // content [foto1.JPG, foto2.JPG, foto3.JPG, foto4.JPG ]
//If checkbox is checked and row ID is not in list of selected row IDs
rows_selected.push(rowId,namaFile);
var dataId=[];
$.each(rows_selected, function(index, rowId, namaFile){
dataId.push(rowId,namaFile);
});
在ajax中我将dataId发送到控制器
$.ajax({
data: {"iddata": "[{"+dataId+"}]"},
});
但在控制器中,iddata只接收一个这样的数组24,6a5236ee48848e648553a35d64c4f64dJPG,25,a31ea31db31483506fbd95e463d4c8ffJPG,26,042fd1eee499e5bb9c93853c0299b42eJPG,27,e243845bcc0447324d449e37b271c9ebJPG,28,8f331fa2a713f5268ab71698a65185b6JPG
控制器中的一些代码
$iddata=array();
$iddata=array($_GET['iddata']);
$a=explode(",", $iddata[0]);
$b=preg_replace('/[^A-Za-z0-9\-]/', '', $a);
$jumlahdata=count($b)/2;
for($i=0;$i<$jumlahdata;$i++)
{
//delete on database
$data=array('id_perjal'=>$b[$i]);
$this->M_perjal_terpasang->Delete_Foto($data);
//and i want deleting foto with unlink
unlink("assets/images/uploads/"$b[$i]);
}
答案 0 :(得分:0)
var rowId = [24,25,26,27];
var namaFile = ['foto1.JPG', 'foto2.JPG', 'foto3.JPG', 'foto4.JPG' ];
var rows_selected = {};
for (var i = 0; i < rowId.length; i++) {
//or check with: if (b.length > i) { assignment }
rows_selected[rowId[i]] = namaFile[i];
}
$.ajax({
data: {"iddata": JSON.stringify(rows_selected)},
});
它会返回{"id_21":"foto1.JPG","id_25":"foto2.JPG","id_26":"foto3.JPG","id_27":"foto4.JPG"}
因此,在ajax页面中,您将获得类似array("id_21" => "foto1.JPG","id_25" => "foto2.JPG","id_26" => "foto3.JPG","id_27" => "foto4.JPG");
答案 1 :(得分:0)
我首先使用命名约定,并使用复数字命名数组,这样您就知道namaFiles
(复数)是一个数组,并且它的一个元素被调用namaFile
(单数)。这样可以避免一些混乱。
我们假设选中了两个复选框,并且它们的ID不同,那么您会以某种方式向 rows_selected 添加两行。目前,你一个接一个地推送这些值,以便得到像[24, 'foto1.JPG', 27, 'foto4.JPG']
这样的数组,但你真的想让它们成对分组,如下所示:
[{rowId: 24, namaFile: 'foto1.JPG'}, {rowId: 27, namaFile: 'foto4.JPG'}]
所以你应该推送像这样的值(假设你有一个索引):
rows_selected.push( {rowId: rowIds[index], namaFile: namaFiles[index]} );
您将重复其他需要添加的对。
在Ajax数据中,您应该使用JSON字符串,如下所示:
var ajaxobj = {
data: {"iddata": JSON.stringify(rows_selected) },
}
在服务器端,您将JSON转换回关联数组,然后通过其键名访问每对中的两个元素:
$iddata = $_GET['iddata'];
$a = json_decode($iddata, true);
foreach($a as $pair) {
//delete in database
$data = array('id_perjal' => $pair['rowId']);
$this->M_perjal_terpasang->Delete_Foto($data);
//delete foto with unlink
unlink("assets/images/uploads/" . $pair['namaFile']);
}