我正在尝试根据存储在数组中并使用AJAX传递的ID从数据库中删除多个项目
数组数据是正确的,我只是无法弄清楚为什么下面的代码不会删除记录。
任何帮助表示赞赏
我的jQuery代码:
$("#bulkdel").click(function(){
event.preventDefault();
var idlist = $("#companylist input:checkbox:checked").map(function(){
return $(this).val();
}).get();
console.log(idlist);
var length = Object.keys(idlist).length
var count = 'There are '+length +' items selected';
var doDelete = $.ajax({
type: 'POST',
url: "dodelete.php",
data: idlist,
dataType: "text",
success: function(resultData) { alert("Delete Complete") }
});
这是PHP代码:
session_start();
include('inc/config.php');
$ids = implode("','", $_POST['idlist']);
mysqli_query($dbc,"DELETE FROM `comp_companies` WHERE `company_id` IN ('".$ids."')");
预先感谢
答案 0 :(得分:3)
问题是因为您要在不带键的请求中发送纯数组,因此$_POST['idlist']
在PHP中未定义。
要解决此问题,只需更改您请求中的data
属性:
var doDelete = $.ajax({
type: 'POST',
url: "dodelete.php",
data: { idlist: idlist }, // note the object here
dataType: "text",
success: function(resultData) {
alert("Delete Complete")
}
});
请注意,如果您不关心IE支持,则可以对对象使用ES6语法,而只需在对象中提供变量即可。然后,将自动推断出密钥名称:
data: { idlist }
var idlist = [1, 2, 3];
console.log({ idlist })