【发布时间】:2015-01-13 00:05:00
【问题描述】:
我正在尝试修复我的 jquery ajax 脚本,该脚本应该删除一个 sql 行并删除存储在服务器上的两个文件。目前,当用户单击删除按钮时,会弹出 js 确认消息,但在用户确认“是”时,脚本会死掉,没有任何内容被删除,无论是 sql 行还是文件。行标识符是“id”。如何纠正这种情况以删除数据,然后删除包含数据的元素?
html
<div class="record<?php echo $id; ?>">
<form method="POST" id="delete_form">
<input type="hidden" id="id" value="<?php echo $id; ?>" name="id" />
<input type="hidden" id="ad_link" value="<?php echo $ad_link; ?>" name="ad_link" />
<input type="hidden" id="listing_img" value="<?php echo $listing_img; ?>" name="listing_img" />
<input type="button" class="delete" name="delete" value="Delete" />
</form>
</div>
js(紧接在之前)
<script src="../js/jquery.js"></script>
<script type="text/javascript">
$(function() {
$(document).on('click', '.delete', function() {
var element = $(this);
if (confirm("Are you sure you want to delete this listing?")) {
$.ajax({
type: "POST",
url: "delete_list.php",
data: {id: element.data("id"), ad_link: element.data("ad_link"), listing_img: element.data("listing_img") },
success: function() {}
});
}
return false;
});
});
php(在不同的页面,delete_list.php)
<?php
if (isset($_POST['id']) && ($_POST['ad_link']) || ($_POST['listing_img'])) {
$idc = $_POST['id'];
unlink($_POST['ad_link']);
unlink($_POST['listing_img']);
try {
require('../dbcon2.php');
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("DELETE FROM listings WHERE id = ?");
$stmt->execute(array($idc));
}
catch (PDOException $e) {
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
}
$url = 'http://website.com/members_area/delete_listings.php';
while (ob_get_status()) {
ob_end_clean();
}
header("Location: $url");
?>
【问题讨论】:
-
尝试
<button type="submit" class="delete" name="delete" />Delete</button>或<input type="submit" class="delete" name="delete" value="Delete" />可能无法执行。如果这不能让它着火,那么我不知道它还能是什么。等待其他可能的答案。 -
你还有一个流浪的
$sql变量,所以我不知道它在做什么。 -
检查您的 Ajax 调用是否启动以及您的发布数据到
-
我昨晚玩了@Fred-ii-按钮设置,但没有成功,我在这里很困惑。 Firebug 没有给我任何线索。你所说的流浪 sql var 是指 $idc 吗?如果我将所有 $idc 更改为 $id,同样的问题吗?
-
不,
echo $sql . "<br>" . $e->getMessage();中的$sql未定义。它不会破坏你的代码,它只是一个未定义的杂散变量。