我有一个列表,其中每个li都包含一个删除按钮,可以在单击时删除它,也可以从我的数据库中删除所选的框数据。我创建了一个id biz_watch'。$ biz_watch_id。'这是每个盒子独有的。使用$ .get调用服务器端php脚本来删除表行。
但脚本不起作用。如果我要删除get函数,我可以删除这些框,但是使用.get命令,无法再删除这些框。以下是代码
foreach($biz_watchlist as $biz_watchlist1){
echo '<li class="biz_watch" id="biz_watch'.$biz_watch_id.'">';
echo '<table style="width:100%">';
echo '<td style="width:50%">';
echo $biz_watch_details['5'];
echo ' | <a class="remove_watch" id="remove_watch'.$biz_watch_id.'">remove</a>';
echo '</td>';
echo '<td>';
echo '<span style="float:right">'.$biz_watch_details['19'].'</span>';
echo '</td>';
echo '</table>';
echo '</li>';
}
<script type="text/javascript">
$(document).ready(function(){
$('.remove_watch').click(function(){
var li = $(this).closest('li.biz_watch');
var action = '../delete_watchlist.php';
var data = { id:13};
$.post(action, data, function(){
li.fadeOut('slow', function() {
li.remove();
});
});
});
});
</script>
我的服务器端脚本
<?php
$id = $_POST["id"];
$query = "DELETE FROM dz0yn_biz_watchlist WHERE biz_id = $id";
$delete_watch_row = mysql_query($query);
?>
答案 0 :(得分:2)
$.post('/.../delete_watchlist.php', {id: $(this).closest('.biz_watch').attr('id')},function(){
$(this).closest('.biz_watch').fadeOut("slow");
});
jquery4u blog总结得很好:
如果表单的处理是幂等的(即它对世界状态没有持久的可观察效果),那么表格方法应该是GET。许多数据库搜索没有明显的副作用,并且是查询表单的理想应用程序。
如果与表单处理相关联的服务有副作用(例如,修改数据库或订阅服务),则该方法应为POST。
修改强>:
您正在动态创建表,这意味着在完全创建表之前调用.ready;因此,很可能不会在所有行上创建点击功能。
您需要使用on()事件将事件应用于稍后可能会创建的对象。
$(document).ready(function(){
$('.remove_watch').on("click", function(){
$.get('/.../delete_watchlist.php', {id: $(this).closest('.biz_watch').attr('id')},function(){
$(this).closest('.biz_watch').fadeOut("slow");
});
});
});
修改:
最后一次尝试:P。由于您只需要12的id而不是整个biz_watch12,您可以使用replace从您的id中删除biz_watch以发送到服务器。
$(this).closest('.biz_watch').attr('id').replace("biz_watch", "");
答案 1 :(得分:2)
使用/前缀相对目录(..)将其转换为引用自身的绝对路径。这有点无意义。第一个/应该删除('../ delete_watchlist.php')。
分解你的脚本。你试图在一行中混合太多东西,这使问题变得混乱。
假设您的服务器端脚本成功,这应该可以实现您所追求的目标。
$(document).ready(function(){
$('.remove_watch').click(function(){
var li = $(this).closest('li.biz_watch');
var action = '../delete_watchlist.php';
var data = { id: li.attr('id').substr(9) };
$.post(action, data, function(){
li.fadeOut('slow', function() {
li.remove();
});
});
});
});