2014-01-18 145 views
0

我的網站上有一項功能:刪除不刷新頁面。用戶只需按下'刪除',瀏覽器就會發送Ajax請求。它會用ID參數加載'delete'腳本。Ajax請求'onError'處理程序

一切正常。但由於數據庫的參照完整性,它不是很好。例如,有可能刪除一些人居住的街道。

我想升級我的腳本。我想添加一個檢查來刪除腳本,並且如果某些「人員」連接到「街道」表,則不要讓刪除數據。點擊按鈕的

jQuery的處理程序:

$('body').on('click', '.deleteStreet', function() 
{ 
    var id = $(this).attr('id'); 
    var hideMe = $(this).parent().parent(); 
    var dataString = 'id=' + id; 
    if(confirm("Are you sure you want to delete street? It is possible some people living there!")) 
    { 
     $.ajax({ 
      type: "GET", 
      url: "/index.pl?mode=streets&action=delete", 
      data: dataString, 
      cache: false, 
      success: function(e) 
      { 
       hideMe.hide(); 
      } 
     }); 
     return false; 
    } 
}); 

它無論如何都會調用腳本,現在反正會刪除數據。我可以添加一些檢查現在刪除腳本,它不會刪除,但jQuery腳本無論如何將工作,無論如何將隱藏錶行(因爲請求發送好,沒有404等)

1)是否有可能請參閱刪除腳本結果並根據它隱藏或不隱藏行?例如,它會返回true或false,js腳本會抓住它並顯示關於刪除或不刪除數據的消息。

2)這個問題是由我的網站結構造成的。在index.pl上有一些開關,並根據查詢加載適當的腳本加載(mode=street,然後加載street.pl,mode=user然後加載users.pl等)。因此它會顯示在delete.pl腳本之前加載的所有數據,並且不可能檢查返回的腳本是真是假。

任何幫助? :) 謝謝!

P.S .:我非常抱歉我的英語不好。

回答

0

您可以在成功回調的第一個參數中獲得ajax調用的結果。例如:

$.ajax({ 
     type: "POST", 
     url: "/index.pl?mode=streets&action=delete", 
     data: dataString, 
     cache: false, 
     success: function(e) 
     { 
      if(e === '1'){ 
       hideMe.hide(); 
      } 
     } 
    }); 

嘗試將測試結果記錄在控制檯中:console.log(e)。 要刪除數據,您應該使用POST請求(或DELETE但不支持所有瀏覽器)。

我不知道你的數據(街道)是怎麼樣的,但另一種方式可能是在刪除請求結果中返回json對象中的所有現有街道。並刷新所有行。

+0

要刪除數據,您應該使用POST請求。爲什麼?所以最終用戶不會只輸入'/ users/delete /#id'並刪除用戶?是的,沒關係,我也只是想過。 –

+0

好的。 E包含結果的html。但它有標籤' ....'。看看我的第二個問題。另外,你能否解釋何時e可用? –

+0

您必須在您的ajax請求中調用其他文件,而不是索引。看起來像你的刪除功能?你有什麼語言服務器端?你應該把你的函數放在另一個文件中。 – MamaWalter