问题描述
我想用ajax删除表的某一行中的一本书,但我做不到。 我的PHP代码具有MVC结构 我的routeur index.PHP
<?PHP
session_start();
define("URL",str_replace("index.PHP","",(isset($_SERVER['HTTPS']) ? "https" : "http").
"://$_SERVER[HTTP_HOST]$_SERVER[PHP_SELF]"));
require_once "controllers/BooksController.controller.PHP";
$bookController = new BooksController;
try{
if(empty($_GET['page'])){
require "views/welcome.view.PHP";
} else {
$url = explode("/",filter_var($_GET['page']),FILTER_SANITIZE_URL);
switch($url[0]){
case "welcome" : require "views/welcome.view.PHP";
break;
case "book" :
if(empty($url[1])){
$bookController->displayBooks();
} else if($url[1] === "s") {
$bookController->deleteBook($url[2]);
} else {
throw new Exception("not exist");
}
break;
default : throw new Exception("not exist");
}
}
}
catch(Exception $e){
$msg = $e->getMessage();
require "views/error.view.PHP";
}
In my views/books.view.PHP
<?PHP
ob_start();
if(!empty($_SESSION['alert'])) :
?>
<div class="alert alert-<?= $_SESSION['alert']['type'] ?>" role="alert">
<?= $_SESSION['alert']['msg'] ?>
</div>
<?PHP
unset($_SESSION['alert']);
endif;
?>
<table class="table text-center">
<tr class="table-dark">
<th>Title</th>
<th colspan="2">Actions</th>
</tr>
<?PHP
for($i=0; $i < count($books);$i++) :
?>
<tr>
<td class="align-middle"><a href="<?= URL ?>books/l/<?= $books[$i]->getId(); ?>"><?=
$books[$i]->getTitle(); ?></a></td>
<td class="align-middle">
<button class="btn btn-danger" id="sweet" data-url="<?= URL ?>books/s/<?= $books[$i]-
>getId(); ?>" data-id="<?= $books[$i]->getId(); ?>">Delete</button>
</td>
</tr>
<?PHP endfor; ?>
</table>
<button type="button" class="btn btn-secondary disabled">Sweet</button>
<?PHP
$content = ob_get_clean();
$title = "Books";
require "template.PHP";
?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(document).on('click','#sweet',function(e){
var bookUrl= $(this).data('url'); // http://localhost/shop/books/s/5
SwalDelete(bookUrl);
e.preventDefault();
});
});
function SwalDelete(bookUrl){
Swal.fire({
title: 'Delete this book ?',text: "the book was deleted in database !",icon: 'warning',showCancelButton: true,confirmButtonColor: '#3085d6',cancelButtonColor: '#d33',cancelButtonText: 'Cancel',confirmButtonText: 'Yes,delete it!',},function(isConfirm){
if(isConfirm){
$.ajax({
url: bookUrl,type: "POST",success: function(resp){
console.log('here cool !!! ');
window.location.href =bookUrl;
}
})
}
return false;
}
);
}
</script>
当我单击“是,将其删除!”时按钮,弹出窗口已关闭,但我有任何操作要删除该行以及chrome导航器中我的控制台开发人员的任何错误。 传递给ajax的bookUrl是http:// localhost / shop / books / s / 5,但没有重定向到控制器,并且我没有错误消息。 有什么办法可以帮助我吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)