2011-01-24 3 views
0

J'utilise MVC 3. J'ai une méthode sur le contrôleur qui retourne un objet JSON, selon cette question, il doit être retourné à moi comme JSON, mais je trouve ce n'est pas le cas: ASP.NET MVC3 - Bug using JavascriptParamètre OnComplete Ajax.ActionLink non Json dans MVC 3?

est ici le code que j'ai:

function DeleteItem(obj) { 
alert(obj.responseText); 
alert(obj.Success); 
} 
</script> 
</head> 

<body> 
@Ajax.ActionLink("test", "Delete", "Home", new { id = "test" }, new AjaxOptions { Confirm = "Delete?", HttpMethod = "Post", OnComplete = "DeleteItem" }); 
</body> 

Et le contrôleur:

[HttpPost] 
public ActionResult Delete(string id) 
{ 
    return Json(new{Success = true,objectId = "testing"}); 
} 

la première boîte de message affiche le texte de réponse qui est: { "succès « : Il est vrai que « objectId »: » testing "}

la seconde affiche la boîte de message non défini

Il revient au client correctement, je ne suis pas sûr de savoir comment le faire sortir?

... Stefan

Répondre

1

Les aides Ajax.* n'a jamais vraiment fonctionné bien. Essayez d'utiliser vous à l'aide des aides normales Html avec jquery:

@Html.ActionLink("test", "Delete", "Home", new { id = "test" }, new { id = "delete" }) 

puis dans un fichier JavaScript distinct:

$(function() { 
    $('#delete').click(function() { 
     if (confirm('Delete?')) { 
      $.post(this.href, { }, function(result) { 
       alert(result.Success); 
      });  
     } 
     return false; 
    }); 
}); 
+0

Merci pour votre suggestion. J'aimerais toujours savoir comment faire fonctionner l'assistant Ajax. *, Mais votre solution fonctionne entre-temps. – Stefan

+0

probablement je suis probablement chanceux qui n'a jamais employé aucune des aides d'Ajax. * En mvc, mais juste me demandant pourquoi ils ne fonctionnent pas correctement? – Kuncevic

0

Vous pouvez reconstruire l'objet comme celui-ci. Cela a fonctionné pour moi.

Json: {"message":"hello", "success": true} 

function getJsonDetails_OnComplete(res) { 

    var obj = eval("(" + res.responseText + ")"); 

    alert(obj.message); 
}; 
Questions connexes