我正在学习Cakephp并且我一直在尝试使用复选框删除多个(已选中)记录,但仍然没有成功。这是我的jQuery:
var ids = [];
$(':checkbox:checked').each(function(index){
ids[index] = $(this).val();;
alert(ids[index]);
});
//alert(ids);
var formData = $(this).parents('form').serialize();
$.ajax({
type: "POST",
url: "tickets/multi_delete",
data:"id="+ids,
success: function() {
alert('Record has been delete');
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest);
alert(textStatus);
alert(errorThrown);
}
});
这里是控制器中的代码:
function multi_delete() {
$delrec=$_GET['id'];
//debuger::dump($del_rec);
foreach ($delrec as $id) {
$sql="DELETE FROM tickets where id=".$id;
$this->Ticket->query($sql);
};
}
任何人都会帮助我。感谢
答案 0 :(得分:0)
您可以在ID数组上尝试.join(','),然后在服务器端尝试使用explode()来获取传递给脚本的ID数组。
e.g。
var idStr = ids.join(',');
将它(idStr)传递给ajax调用
$.ajax({
type: "POST",
url: "tickets/multi_delete",
data: {id:idStr},
//more code cont.
在服务器端:
$ids = explode(',',$_POST['ids']);
OR
检查jquery文档中的jquery.param()函数。应用到IDS数组,然后将其传递给$ .ajax({});
注意:您使用的是POST而不是您提供的代码中的GET HTTP METHOD
答案 1 :(得分:0)
使用json编码和解码进行序列化数据传输
答案 2 :(得分:0)
由于默认情况下jQuery不支持JSON编码,请下载JSON Plugin for jQuery。
您的javascript随后变为:
$.ajax({
type: "POST",
url: "tickets/multi_delete",
data: { records: $.toJSON(ids) },
success: function() {
alert('Records have been deleted.');
},
});
在控制器:
中var $components = array('RequestHandler');
function multi_delete() {
if (!$this->RequestHandler->isAjax()) {
die();
}
$records = $_POST['records'];
if (version_compare(PHP_VERSION,"5.2","<")) {
require_once("./JSON.php"); //if php<5.2 need JSON class
$json = new Services_JSON();//instantiate new json object
$selectedRows = $json->decode(stripslashes($records));//decode the data from json format
} else {
$selectedRows = json_decode(stripslashes($records));//decode the data from json format
}
$this->Ticket->deleteAll(array('Ticket.id' => $selectedRows));
$total = $this->Ticket->getAffectedRows();
$success = ($total > 0) ? 'true' : 'false';
$this->set(compact('success', 'total'));
}
RequestHandler组件确保这是一个AJAX请求。这是可选的。
相应的视图:
<?php echo '({ "success": ' . $success . ', "total": ' . $total . '})'; ?>
祝你好运!