Есть много вопросов по этому вопросу, но нет ответа, кажется, легко работать.
У меня есть <form>
с иконками delete в каждой строке. Теперь .on('click',functoin()..
меня есть запрос ajax:
$.ajax({ type:"POST", url:"/update_rows.php", data:"delete_id="+$(this).attr("row"), success:function(data) { if(data) { //window.location.reload(true); //alert(data); $(".refresh-after-ajax").load("/cms/modules/mod11/inc/modinclude_admin.php .refresh-after-ajax"); } else { //window.location.reload(true); } } });
Это работает, и update_rows.php
выглядит так:
<?php require_once($_SERVER["DOCUMENT_ROOT"].'/cms/inc/config.inc.php'); global $navid,$DB_PRE,$lang_cms; $db=new DB(); $sql='Delete FROM '.$DB_PRE.'_mod_ref_pricing WHERE id='.intval($_POST['delete_id']); $db->query($sql); ?>
Теперь я не хочу использовать window.location.reload(true);
Я просто хочу обновить этот контейнер, где строка была удалена. Как вы можете видеть, я пытался с .load()
перезагрузить только <div/>
но никаких шансов. alert(data)
пуст, потому что я ничего не возвращаю из update_rows.php
но зачем мне возвращаться туда, чтобы обновить <div/>
?
Спасибо за советы!
OOOHHHHHH Я написал .load()
не в том месте, где он работает:
$.ajax({ type:"POST", url:"/update_rows.php", data:"delete_id="+$(this).attr("row"), success:function(data) { if(data) { } else { $(".refresh-after-ajax").load(window.location + " .refresh-after-ajax"); } } });
Спасибо за помощь, $ (this) .remove () также было бы хорошим решением
you have 2 options to update the container 1) on successfully deletion remove the deleted element using jquery .remove() method or 2) update(innerHtml)) for whole container by return the data same as same format use on page load.
Вы можете вернуть идентификатор из вашего PHP-кода, который является вашим delete_id в Js. Со ссылкой на это вы можете использовать:
$("#your_delete_id").remove();
$(this).remove();
после линии нагрузки ajax.
Используйте оба параметра .remove () и .html () в зависимости от того, хотите ли вы удалить строку или заменить ее содержимое.
Обратите внимание, что ваш php должен проверять наличие сбоя на удалении / обновлении db и возвращать определенные данные для этого, которые вы можете проверить:
$(".click-icon").on('click', function() { $.ajax({ type:"POST", url:"/update_rows.php", data:"delete_id="+$(this).attr("row"), success:function(data) { if(data=="failed") { //show error } else if(data=="delete") { $(this).closest('tr').remove(); // remove row } else if(data) { $(this).closest('tr').html('<td>'+data+'</td>'); // replace row with new cell } } }); });
.$(".click-icon").on('click', function() { $.ajax({ type:"POST", url:"/update_rows.php", data:"delete_id="+$(this).attr("row"), success:function(data) { if(data=="failed") { //show error } else if(data=="delete") { $(this).closest('tr').remove(); // remove row } else if(data) { $(this).closest('tr').html('<td>'+data+'</td>'); // replace row with new cell } } }); });
jquery.fn.remove () работает отлично. но более сложные работы, используйте функцию загрузки javascript.
В update_rows.php вы просто написали запрос, но ничего не сделали.
$ Запустить = $ db-> запроса ($ SQL); if ($ run) {echo success; } else {echo failed; }
Затем в вашей javascript ajax-функции используйте id для удаления строки из div. Если вы предупреждаете (данные), вы должны увидеть успех или потерпеть неудачу.
var delete_id=$(this).attr("row"); $.ajax({ type:"POST", url:"/update_rows.php", data:delete_id, success:function(data) { if(data=='success') { //window.location.reload(true); //alert(data); $("#"+delete_id).remove(); } else { //window.location.reload(true); } } });