2012-05-12 149 views
2

我有一個列表,每個li都包含一個刪除按鈕,可以在點擊時將其刪除,也可以從我的數據庫中刪除所選框。我創建了一個id biz_watch'。$ biz_watch_id。'這對每個盒子都是獨一無二的。使用$ .get調用服務器端的php腳本來刪除表格行。jquery刪除按鈕不能刪除數據庫中的行

但是腳本不起作用。如果我要刪除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

確定鏈接是正確的? '/.../delete_watchlist.php' 你可能不需要這些點之一...=) – benqus

+0

你的id可能是'remove_watch'。$ biz_watch_id',但你只需要''biz_watch_id'在你的onlick處理程序中。 – Smamatti

+0

@benqus是的。鏈接是正確的。我用...代替它來縮短網址。 – Lawrence

回答

2
  1. 與/其變爲絕對路徑引用本身加前綴相對目錄(..)。這是沒有意義的。第一個/應該被刪除('../delete_watchlist.php')。

  2. 分手你的腳本。你試圖把太多的東西混合在一起,這會混淆問題。

這應該可以實現你所追求的,假設你的服務器端腳本成功。

$(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(); 
      }); 
     }); 
    }); 
}); 
+0

請注意對問題的意見。他知道腳本的路徑是正確的。爲了這個問題,他只是縮短了它。 –

+0

啊,好的。錯過了 – Chris

+0

@Chris哦whao!像魅力一樣工作。謝謝!嗯。剛剛意識到,盒子消失了,但查詢不起作用。 – Lawrence

2

你應該使用post()超過get()

$.post('/.../delete_watchlist.php', {id: $(this).closest('.biz_watch').attr('id')},function(){ 
    $(this).closest('.biz_watch').fadeOut("slow"); 
}); 

jquery4u blog總結說得好:

如果t他處理一個表單是冪等的(即它對世界的狀態沒有持久的可觀察的影響),那麼表單方法應該是GET。許多數據庫搜索沒有明顯的副作用,並且使查詢表單理想的應用程序。

如果與處理表單相關的服務有副作用(例如,修改數據庫或訂閱服務),則該方法應爲POST。

編輯

要動態,這意味着該表是完全建立在你的。就緒被稱爲創建表;因此,它很可能不會在所有行上創建點擊功能。

您需要使用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", ""); 
+0

是的。我在$(this).closest(.biz_watch')下插入了一個alert(「success」)。fadeOut(「slow」);並顯示警告框。但該框仍然不會淡出 – Lawrence

+0

不是$(this).closest(.biz_watch')。fadeOut(「slow」);在這種情況下的成功處理程序。我的意思是當.post命令成功,然後這個命令 - > $(this).closest(.biz_watch')。fadeOut(「slow」);會繼續嗎? – Lawrence

+0

不可以。我可以在哪裏找到?我只是沒有看到我的螢火蟲控制檯的錯誤日誌中的任何錯誤。 – Lawrence