2011-01-07 56 views
0

我的問題相當直接。我從一個mysql表創建一個表,表中的每一行都包含數據庫中的記錄。爲每個新記錄創建一個新行,等等,直到不再有記錄返回。我想給他們一個選項來刪除一條記錄,所以我想給每一行它自己的類名稱,所以我試圖將php代碼回顯到類名中。HTML/PHP問題

它看起來像這樣:

<tr class="name<?php echo $row['id'];?>"> 

想,如果$行[ '身份證']爲1類,然後將NAME1?

好吧,現在我得到了對此的確認,我正在使用jQuery刪除記錄並且不重新加載頁面。

我想要做的是當用戶點擊一個按鈕我使用AJAX刪除記錄在數據庫和屏幕上。我有工作從數據庫中刪除,但我無法刪除它在屏幕上,而無需重新加載頁面。

這裏是我的jQuery代碼:

$(".delete").click(function(){ 
    var delete_id = "delete_id="+$(this).attr("id") 
    $.ajax({ 
     type: "POST", 
     dataType: "HTML", 
     url: "deleteScript.php", 
     data: delete_id, 
     success: function(data) { 
      $(".name"+$(this).attr("id")).remove(); 
     } 
    }); 
}); 

不應該在該刪除與屏幕上的類名什麼?我已經使用alert來確保.name「+ $(this).attr(」id「)是正確的,並且它返回了我以爲會出現的錯誤。 ?

+0

所有東西都可以修補,直到你說「所以我想給每一行它是自己的類名」 - 這是刪除記錄有什麼關係? – mpen 2011-01-07 18:44:19

+2

它應該是。當你嘗試時會發生什麼? – lonesomeday 2011-01-07 18:44:39

+0

是這個作業嗎? – used2could 2011-01-07 18:46:28

回答

1

與您的代碼的問題是在下面一行:

$(".name"+$(this).attr("id")).remove(); 

既然你是一個AJAX的成功處理程序中,this指XMLHttpRequest對象,到其上觸發事件的元素。您應該緩存元素以在成功處理程序中使用。

您的代碼最終應該是這樣的:

$(".delete").click(function(){ 
    var delete_id = "delete_id="+this.id, 
     self = this; // cache this 
    $.ajax({ 
     type: "POST", 
     dataType: "HTML", 
     url: "deleteScript.php", 
     data: delete_id, 
     success: function(data) { 
      $(".name"+self.id).remove(); // use self rather than this 
     } 
    }); 
}); 

還請注意,我用this.id,因爲它是遠遠超過$(this).attr('id')更快(20倍以上)。

1

是,類名是「NAME1」如果$row['id']是1.您可能已經看過輸出HTML確認,雖然。

而且,我不知道如何幫助你與刪除記錄問題我會添加一個額外的列,以產生效果

<td><a href="/delete-row.php?id=<?=$row['id']?>">Delete</a></td> 

那麼這就是花式褲子omg-you-have-to-use-POST-guys開始尖叫的地方,所以應該帶你到一個確認頁面,你可以使用帶有刪除按鈕的表單。


如果你使用jQuery,那麼你應該在技術上使用「ID」,而不是一個「階級」的屬性,但我仍然這樣做方式,然後ajaxify的鏈接,以便它不會把你帶到另一個頁面。這樣,如果用戶禁用了JS,它就不會發生爆炸,他們只會稍微使用用戶友好的方式刪除東西。