GOOGLE ADS

пятница, 13 мая 2022 г.

Не удается отправить XMLHttpRequest

Я пытаюсь удалить данные с помощью vanilla javascript ajax. После отправки POST-запроса со значением идентификатора в файл php. Каждый раз в консоли пишет "ошибка".

HTML

<div class="deleteButton" onclick="showAllert(this)" id="1">
<i class="fa-solid fa-trash-can fa-2x" style="color:#A81E22" title="delete"></i>
</div>

ЯВАСКРИПТ

<script>
function showAllert(a) {
// sent delete request
var dataId = a.getAttribute("id");
var dataId = parseInt(dataId);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'includes/vehicles/del-veh.php', true);
// xhr.responseType = 'json';
xhr.onload = () => {
if(xhr.status === 200) {
console.log(xhr.response);
location.reload();
}else {
console.log("There was a problem");
}
}
var data = JSON.stringify({id: dataId});
xhr.send(data);

}
</script>

PHP

<?php
//Connection statement
require_once('../../Connections/ukcd.php');
$data = json_decode(file_get_contents('php://input'), true);
if(!empty($data["id"])) {
// Required variables
$vehid = $data['id'];
echo "success";
}else {
echo "error";
}
//AUTOEXECUTE METHOD
$delveh = $ukcd->prepare('DELETE FROM a_ukcd_client_vehicles WHERE clientveh_id =?');
$result = $ukcd->execute($delveh, $vehid);

Решение проблемы

Отправьте данные POST в формате urlencoded:

<script>
function showAllert(a) {
// sent delete request
var dataId = a.getAttribute("id");
var dataId = parseInt(dataId);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'includes/vehicles/del-veh.php', true);
// xhr.responseType = 'json';
xhr.onload = () => {
if(xhr.status === 200) {
console.log(xhr.response);
location.reload();
}else {
console.log("There was a problem");
}
}
// var data = JSON.stringify({id: dataId});
xhr.send(`id=${dataId}`);

}
</script>

И в вашем PHP-скрипте:

<?php
//Connection statement
require_once('../../Connections/ukcd.php');
$id= $_POST['id'];
if(!empty($id)) {
// Required variables
$vehid = $id;
echo "success";
}else {
echo "error";
}
//AUTOEXECUTE METHOD
$delveh = $ukcd->prepare('DELETE FROM a_ukcd_client_vehicles WHERE clientveh_id =?');
$result = $ukcd->execute($delveh, $vehid);

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...