2011-02-15 6 views
8

Je dois vérifier si "succès" est vrai ou faux. je reçois la réponse suivante JSON retour de l'action:Mvc json réponse vérifier pour vrai/faux

{ "succès": true}

Comment puis-je vérifier si cela est vrai ou faux. J'ai essayé mais ça ne marche pas. il revient undefined

$.post("/Admin/NewsCategory/Delete/", { id: id }, function (data) { 
     alert(data.success); 
     if (data.success) { 
      $(this).parents('.inputBtn').remove(); 
     } else { 
      var obj = $(this).parents('.row'); 
      serverError(obj, data.message); 
     } 
    }); 
+0

Je pense que je l'ai compris. Je faisais ceci: return Json (new {success = true, message = "ceci est test"}, "text/html"); avec "text/html", quand je l'ai enlevé cela fonctionne. pas sûr mais pour une raison quelconque, IE a besoin de cela ?? – ShaneKm

Répondre

24

Votre action du contrôleur devrait ressembler à ceci:

[HttpPost] 
public ActionResult Delete(int? id) 
{ 
    // TODO: delete the corresponding entity. 
    return Json(new { success = true }); 
} 

Personnellement, j'utiliser le protocole HTTP SUPPRIMER verbe qui semble plus approapriate pour la suppression des ressources sur le serveur et est plus RESTful:

[HttpDelete] 
public ActionResult Delete(int? id) 
{ 
    // TODO: delete the corresponding entity. 
    return Json(new { success = true, message = "" }); 
} 

puis:

$.ajax({ 
    url: '@Url.Action("Delete", "NewsCategory", new { area = "Admin" })', 
    type: 'DELETE', 
    data: { id: id }, 
    success: function (result) { 
     if (result.success) { 
      // WARNING: remember that you are in an AJAX success handler here, 
      // so $(this) is probably not pointing to what you think it does 
      // In fact it points to the XHR object which is not a DOM element 
      // and probably doesn't have any parents so you might want to adapt 
      // your $(this) usage here 
      $(this).parents('.inputBtn').remove(); 
     } else { 
      var obj = $(this).parents('.row'); 
      serverError(obj, result.message); 
     } 
    } 
});