使用AJAX从基于阵列的数据库中删除数据

时间:2018-09-06 09:13:56

标签: php jquery arrays ajax

我正在尝试根据存储在数组中并使用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."')");

预先感谢

1 个答案:

答案 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 })