Я думаю, что ваша проблема связана с js больше, чем с php. Поскольку файлы remove.php выглядят нормально, у вас может быть проблема с AJAX.
function deleteProduct(id) {
$(this).find('deleteProduct').click(function(event) {
deleteProduct($(event.currentTarget).parent('tr'));
});
Это выглядит странно, так как вы используете jquery "find" для некласса. Может ты забыл точку? Должно быть $ (this) .find (". DeleteProduct") .... и если вы сделаете это, не забудьте добавить класс.
Кроме того, когда вы удаляете свой продукт через ajax, вы никогда не обновляете таблицу, поэтому строка продукта все равно будет присутствовать. Когда вы вычисляете общее количество, вы выбираете текущие элементы таблицы:
var total = 0;
$('.amount').each(function(e){
total -= Number($(this).val());
});
это приведет к неправильным значениям, если вы не удалите строку, на которую нажимаете кнопку delete.
$('#total-amount').text(total);
$.ajax({
type: 'POST',
url: 'remove.php',
dataType: 'JSON',
data: {id: id},
success: function (data) {
},
error: function (xhr, status, error) {
alert(xhr.responseText);
}
});
Вы должны добавить к функции обратного вызова success ту часть, где вы вычисляете итоги, но перед этим вам следует удалить строку таблицы с чем-то вроде $ ("...."). Remove ();
Редактировать с правильным кодом:
Прежде всего, извлеките слушатель кнопки удаления jquery из функции удаления и сделайте так:
<script>
$('.mydeletebtn').click(function(event) {
deleteProduct($(this).data("rowid"));
});
function deleteProduct(id) {
.....
}
Затем измените вывод HTML для строки удаления, изменив его следующим образом:
'<td>' + " <Button type='button' class='mydeletebtn btn btn-primary' data-rowid="'+id+'" >Delete</Button> " + '</td>' +
так как вам не нужен онклик, когда вы используете jquery. Я изменил его так, чтобы ваш rowid передавался как атрибут данных javascript.
После всего этого вам нужно обработать удаление строки + полное обновление, например:
var $parentRow = $(this).closest("tr");
$.ajax({
type: 'POST',
url: 'remove.php',
dataType: 'JSON',
data: {id: id},
success: function (data) {
$parentRow.delete();
updateTotals();
},
error: function (xhr, status, error) {
alert(xhr.responseText);
}
});
Ваш окончательный JS должен быть примерно таким:
<script>
function updateTotals(){
var total = 0;
$('.amount').each(function(e){
total -= Number($(this).val());
});
$('#total-amount').text(total);
}
$('.mydeletebtn').click(function(event) {
deleteProduct($(this).data("rowid"),$(this));
});
function deleteProduct(rowid,$row) {
var $parentRow = $(this).closest("tr");
$.ajax({
type: 'POST',
url: 'remove.php',
dataType: 'JSON',
data: {id: rowid},
success: function (data) {
$parentRow.delete();
updateTotals();
},
error: function (xhr, status, error) {
alert(xhr.responseText);
}
});
}
</script