Удаление данных из базы данных на основе массива с использованием AJAX - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь удалить несколько элементов из БД на основе идентификаторов, которые хранятся в массиве и передаются с использованием AJAX

Данные массива верны. Я просто не могу понять, почему приведенный ниже код не удалит записи.

Любая помощь действительно ценится

Мой код 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 голосов
/ 06 сентября 2018

Проблема в том, что вы отправляете в запросе простой массив без ключа, поэтому $_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 })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...