我制作了一个模型,当我从切换菜单中单击删除时调用该模型。然后,它给出了一个数据列表,我可以通过单击它们旁边的按钮来删除这些数据。但是由于某种原因,我无法弄清楚页面何时重新加载,没有删除任何内容。我在javascript中成功后添加了一个警报"成功"。将调用此警报,但不会删除数据。引导和jQuery链接在索引页中,它们都工作得很好。这个问题令人目瞪口呆,如果有人能对此有所了解,我将不胜感激。
这是 html:
<div class="modal fade" id="delete_comment" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="form-horizontal" role="form">
<div class="modal-header">
<h4>Delete comments</h4>
</div>
<div class="modal-body">
<?php $comment_array = comments::get_comments($username); ?>
<?php if(isset($comment_array) && is_array($comment_array)): ?>
<?php
foreach ($comment_array as $key => $comment):
foreach($comment as $key2 => $comment2):
$max = count($comment_array);
$i=1;
while($i<=$max):
?>
<?php
$comment_id = $comment2->id;
$comment_name = $comment2->comment_name;
$comment_type = $comment2->comment_type;
?>
<form class="comment_delete_area_wrapper" action="" method="post">
<div class="comment_delete_wrapper">
<ul>
<li class="comment_delete_comments">
<?php echo $comment_type ?> : <?php echo $comment_name; ?>
</li>
</ul>
<div class="comment_delete_button_wrapper">
<input type="submit" id="<?php echo $comment_id; ?>"
class="btn btn-danger comment_delete_button" value="Delete"/>
</div>
<br>
<hr>
<input type="hidden" value="<?php echo $comment_id; ?>"
id="comment_delete_id" name="comment_delete_name"/>
</div>
</form>
<?php $i++; ?>
<?php endwhile;?>
<?php endforeach; ?>
<?php endforeach;?>
<?php endif; ?>
</div>
<div class="modal-footer">
<a class="btn btn-default" data-dismiss="modal">Close</a>
</div>
</div>
</div>
</div>
</div>
这是类的PHP代码。注释都来自数据库,完美且看起来很完美。问题是删除它们。
<?php
class Comments{
public static function delete($cl_id)
{
$db = new PDO('mysql:host=localhost;dbname=comment;charset=utf8', 'root', '');
$stmt = $db->prepare("DELETE FROM `comments` WHERE id = :cl_id");
$stmt->bindParam(':cl_id', $cl_id);
if ($stmt->execute()) {
return true;
} else {
return null;
}
}
}
还有javascript:
$(document).ready(function(){
add_delete_handlers();
});
function add_delete_handlers(){
$('.comment_delete_button').each(function(){
var btn = this;
$(btn).click(function(){
comment_delete(btn.id);
});
});
}
function comment_delete(_comment_id){
$.post('comment_area_ajax/comment_delete.php', {
task: 'comment_delete',
comment_id: _comment_id
}
).success(function(data){
alert('Success');
$('#_' + _comment_id).detach();
});
}
最后是 AJAX 要调用的代码:
<?php
if(isset($_POST['task']) && $_POST['task'] =='comment_delete') {
require_once '../comment_area_sql/models/comment_delete_model.php';
require_once '../comment_area_sql/models/comments.php';
if(class_exists('Comments')){
if(Comments::delete($_POST['comment_id'])){
echo 'true';
}else{
echo 'false';
}
?>
尝试:
$(document).ready(function() {
add_delete_handlers();
});
function add_delete_handlers() {
$('.comment_delete_button').click(function() {
comment_delete($('this').attr('id'));
});
}
function comment_delete(_comment_id) {
$.post('comment_area_ajax/comment_delete.php', {
task: 'comment_delete',
comment_id: _comment_id
}, function(data) {
alert('Success');
$('#_' + _comment_id).detach();
});
}
为您的 ajaxed 文件尝试此操作:
<?php
if(isset($_POST['task']) && $_POST['task'] =='comment_delete') {
require_once '../comment_area_sql/models/comment_delete_model.php';
require_once '../comment_area_sql/models/comments.php';
if(class_exists('Comments')){
if(Comments::delete($_POST['comment_id'])){//note the change
$message = 'comment deleted';
}else{
$message = 'we have a error';
}
return json_encode(array('message'=>$message));
}
}
?>