2011-08-04 5 views
0

J'utilise @ Ajax.ActionLink pour supprimer un enregistrement:Ajax.ActionLink OnComplete jamais appelé

@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) 

        }) 

qui produit le lien suivant:

<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> 

La suppression fonctionne parfaitement mais le OnComplete La fonction javascript "DeleteRunInTable" n'est jamais appelée (je mets un point d'arrêt dans le javascript). Quelqu'un sait pourquoi?

Voici la fonction javascript (inclus dans un fichier externe):

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

J'ai vérifié dans les outils de développement Google Chrome pour vous assurer que le script chargement correct et il est. Je me suis également assuré que jquery et jquery discrètes étaient inclus.

+0

Pouvez-vous appeler DeleteRunInTable à partir de la console Javascript? – StriplingWarrior

+0

Je ne sais pas encore. Je vais essayer quand je rentre à la maison ce soir (où le code est). Je suis relativement nouveau dans le développement web en général, en particulier javascript et Jquery, donc je n'ai jamais utilisé la console javascript, mais je vais essayer quand je rentre à la maison et vous faire connaître les résultats. – coding4fun

+0

Javascript a quelques règles de portée excentriques. Si votre fonction n'est pas définie dans une portée globale, elle n'existe probablement pas lorsque la méthode OnComplete est exécutée. – StriplingWarrior

Répondre

0

Merci j'ai réussi. J'ai changé la fonction un peu:

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

Je ne sais pas pourquoi il n'a pas été arrêter au point de rupture avant, mais maintenant son fonctionne bien.