2011-11-27 42 views
0

後$ .ajax發送請求到控制器操作我想從服務器獲取信息,然後更新我的部分視圖,例如我有一個列表在我的視圖中呈現我使用$ .ajax post請求從列表中刪除項目,然後我想我的列表異步更新自己。

這裏是我的功能從列表中刪除項:

$(".btnDeleteCurrentFavSong").click(function() { 

    var songId = $(this).attr('name'); 

    $.ajax({ 
     type: 'POST', 
     url: "/Home/DeleteCurrentFav/", 
     data: { id: songId }, 
     success: ShowMsg("Song deleted successfully"), 
     error: ShowMsg("There was an error therefore song could not be deleted, please try again"), 
     dataType: "json" 
    }); 
}); 

我應該以某種方式重定向到返回的歌曲列表的視圖上阿賈克斯成功的行動?

回答

1

如果您單擊列表中的項目是這樣的:

<li name="120">Artist - Title</li> 

您的JavaScript可能會是這個樣子:

$(".btnDeleteCurrentFavSong").click(function() { 

    var songId = $(this).attr('name'); 

    $.ajax({ 
     type: 'POST', 
     url: "/Home/DeleteCurrentFav/", 
     data: { id: songId }, 
     success: function() { 
      ShowMsg("Song deleted successfully"); 
      $("li[name=" + songId + "]").remove(); 
     }, 
     error: ShowMsg("There was an error therefore song could not be deleted, please try again"), 
     dataType: "json" 
    }); 
}); 
+0

甜,沒有想到的是!簡單,那就是我需要的 –

+0

這裏是一個可能的錯誤。當用戶比響應速度更快並在獲取響應之前設法刪除其他一些行時,只會刪除最後一行,因爲songId具有上一個值。這就是爲什麼我建議返回帶有響應的已刪除的項目標識,並使用它來代替在另一個範圍中設置的值 – maxlego

0

這取決於您希望提供的用戶體驗。公約規定應該向用戶展示他們行爲的效果。從你的例子看來,你正在通過ShowMsg函數來做這件事。至於你是否應該重定向,恐怕沒有什麼可以在那裏發揮作用,在你的網站上做任何一致的事情,並且對用戶來說會很自然。

0

選項從動作

    • 返回刪除的項目的ID上成功移除已刪除項目與JS

    選擇B

    • 返回部分從動作視圖
    • 成功取代容器呈現h TML