2016-11-22 59 views
0

我有一個Ajax.ActionLink向服務器發送請求並從服務器獲取結果。所以在AjaxOption我只寫了成功函數的名字。如何從後端和前端刪除特定的錶行?

OnSuccess = "SuccessDeleteFunction" 

但基於結果我想改變DOM element.To傳中成功函數當前的DOM元素我用這個代碼:

OnSuccess = "SuccessDeleteFunction(this)" 

但我怎麼能有兩個在同一時間。

function SuccessDeleteFunction(result, tag) { 

    if (result.Success) { 
     // do sth 
    } 
    eval(result.Script); 
} 

這裏是我的代碼:

@foreach (var item in Model) 
{ 
    <tr class="ContentRow"> 
     <td> 
      @Html.DisplayFor(modelItem => item.Name) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Email) 
     </td> 
     <td> 
      @Ajax.ActionLink(" ", "Delete", "Product", new { id = @item.Id }, new AjaxOptions() { Confirm = "Are you sure?", HttpMethod = "get", OnSuccess = "SuccessDeleteFunction" }, new { @class = "btn fa fa-trash text-danger fa-2x " }) 

     </td> 
    </tr> 
} 
+0

您無法將參數傳遞給ajax成功方法。你爲什麼需要它?它沒有任何意義。 –

+0

我想如果結果是成功的,然後刪除父tr。所以沒有必要從服務器重新加載列表,在客戶端我會處理它。 – Afsaneh

+0

分享你的html也。 –

回答

0

你有你的項目ID到TR的一樣:

@foreach (var item in Model) 
    { 
     <tr class="ContentRow" id="tr_'@item.id'"> 
      <td> 
       @Html.DisplayFor(modelItem => item.Name) 
      </td> 
       <td> 
       @Html.DisplayFor(modelItem => item.Email) 
       </td> 
       <td> 
       @Ajax.ActionLink(" ", "Delete", "Product", new { id = @item.Id }, new AjaxOptions() { Confirm = "Are you sure?", HttpMethod = "get", OnSuccess = "SuccessDeleteFunction" }, new { @class = "btn fa fa-trash text-danger fa-2x " }) 

       </td> 
     </tr> 
    } 

而在你JS代碼,你必須要做到這一點,還有一件事您需要更多的是返回您的項目IDSERVER RESPONSE

function SuccessDeleteFunction(result) { 

    if (result.Success) { 
     // also return your that id from server in response.... 
     $("tr_" + result.id).remove(); 
    } 
    eval(result.Script); 
}