У меня есть таблица с данными mysql, я добавляю мусорную кнопку, и я хочу удалить каждую строку, когда кнопка мусора нажата с помощью функции ajax, это мой html:
<table border="1"> <?php $sql ="SELECT * FROM music"; $result = mysql_query($sql) or die(mysql_error()); while($row = mysql_fetch_object($result)){ echo '<tr><td>'.$row->file_name.'</td><td>'.$row->composer.'</td><td>'.$row->lyric.'</td><td>'.$row->music_thumb.'</td><td>'.' <a href="#" id="'.$row->msuic_id.'" class="trash" > جذف کردن </a> '.'</td></tr>'; } ?> </table>
и моя функция ajax:
$(function(){ $('.trash').click(function(){ var del_id= $(this).attr('id'); var $ele = $(this).parent().parent(); $.ajax({ type:'POST', url:'delete.php', data:del_id, success: function(data){ if(data=="YES"){ $ele.fadeOut().remove(); }else{ alert("can't delete the row") } } }) }) });
а также мою страницу «delete.php» здесь:
<?php include('../db_inc.php'); $music_number = "POST['del_id']"; echo '$music_number'; $qry = "DELETE FROM music WHERE msuic_id ='$music_number'"; $result=mysql_query($qry); ?>
Я думаю, что моя проблема – функция ajax; благодаря
попробуй это
$.ajax({ type:'POST', url:'delete.php', data:{del_id:del_id}, success: function(data){ if(data=="YES"){ $ele.fadeOut().remove(); }else{ alert("can't delete the row") } } }) })
а также изменить
$music_number = "POST['del_id']";
в
$music_number = $_POST['del_id'];
Ваш код ajax должен быть следующим:
$(function(){ $(document).on('click','.trash',function(){ var del_id= $(this).attr('id'); var $ele = $(this).parent().parent(); $.ajax({ type:'POST', url:'delete.php', data:{'del_id':del_id}, success: function(data){ if(data=="YES"){ $ele.fadeOut().remove(); }else{ alert("can't delete the row") } } }); }); });
И PHP-код должен быть:
<?php include('../db_inc.php'); $music_number = $_POST['del_id']; //echo $music_number; $qry = "DELETE FROM music WHERE msuic_id ='$music_number'"; $result=mysql_query($qry); if(isset($result)) { echo "YES"; } else { echo "NO"; } ?>
В дополнение к приведенным выше ответам, вы должны делегировать ваш обработчик на клике, чтобы предотвратить ненужное дублирование
$(document).on('click', '.trash', function() { ... });
Попробуй это:
$music_number = POST['del_id']; in delete.php write ajax function like: $.ajax({ type:'POST', url:'delete.php', data:del_id, success: function(data){ if(data=="YES"){ $ele.fadeOut().remove(); }else{ alert("can't delete the row") } } }) });
отправлять вам данные как объекты, а не только значения
... type:'POST', url:'delete.php', data:{'del_id':del_id}, //<----here ....
и взять его как POST в delete.php
$music_number = $_POST['del_id'];
обновленный
добавьте это в свой файл delete.php
<?php include('../db_inc.php'); $music_number = "POST['del_id']"; $qry = "DELETE FROM music WHERE msuic_id ='$music_number'"; $result=mysql_query($qry); if($result) { echo "Yes"; } else { echo "No"; } ?>
Вот то, что вам нужно исправить
В файле "delete.php" $music_number = "POST['del_id']"; // to $music_number = $_POST['del_id'];
$music_number = "POST['del_id']"; // to $music_number = $_POST['del_id'];
Кроме того, в случае успешного обращения ajax вы проверяете «ДА» в ответ, который не отправляется нигде в этом файле.
Изменение вашего запроса ajax
data: {'del_id':del_id},
Надеюсь это поможет.