2011-08-04 54 views
0

我使用@ Ajax.ActionLink刪除一條記錄:ajax.Actionlink的onComplete從來沒有被稱爲

@Ajax.ActionLink("Delete","DeleteRun",new {RunId = run.RunId}, 
        new AjaxOptions() { Confirm = "Are you sure you want to delete this entry?", 
             HttpMethod = "DELETE", 
             OnComplete = string.Format("DeleteRunInTable({0});",run.RunId) 

        }) 

將會產生以下鏈接:

<a data-ajax="true" data-ajax-complete="DeleteRunInTable(11);" data-ajax-confirm="Are you sure you want to delete this entry?" data-ajax-method="DELETE" href="/Runs/Delete/11">Delete</a> 

的刪除工作完美,但在的onComplete javascript函數「DeleteRunInTable」永遠不會被調用(我在javascript中放置了一個斷點)。有人知道爲什麼

這裏是JavaScript函數(包括作爲外部文件):

function DeleteRunInTable(RunId) { 
     $("tr[data-runid=" + RunId).remove(); 
} 

我檢查在Chrome開發者工具,以確保腳本加載確定,它是。我也確信jquery和jquery不顯眼的被包括在內。

+0

你可以從Javascript控制檯調用DeleteRunInTable嗎? – StriplingWarrior

+0

還不確定。當我今晚回家時(代碼在哪裏),我會嘗試。我對web開發相對較新,特別是javascript&jquery,所以我從來沒有使用過JavaScript控制檯,但是我會嘗試當我回家並讓你知道結果。 – coding4fun

+0

JavaScript有一些古怪的範圍規則。如果你的函數在某個全局範圍中沒有被定義,那麼當OnComplete方法運行時它可能不存在。 – StriplingWarrior

回答

0

謝謝,我得到它的工作。我改變了一點功能:

function DeleteRunInTable(RunId) { 
    //$("tr[data-runid=" + RunId).remove(); 
    $("tr[data-runid='" + String(RunId) + "']").remove(); 
    return false; 
} 

不知道爲什麼它不停在斷點之前,但現在其工作正常。