les résultats d'appels ajax en erreur au lieu de succès
-
28-10-2019 - |
Question
Dans mon ASP.net projet MVC3, j'utiliser un appel ajax pour envoyer des données JSON à créer actionmethod dans la Société de contrôleur. Mais quand je déboguer l'appel ajax, il finit toujours par un résultat d'erreur au lieu des succès résultent.
appel ajax:
$.ajax({
url: '/Company/Create',
type: 'POST',
data: JSON.stringify(CreateCompany),
dataType: 'Json',
contentType: 'application/json; charset=utf-8',
success: function () {
alert('ajax call successful');
},
error: function () {
alert('ajax call not successful');
}
});
Ma méthode d'action dans le contrôleur de l'entreprise:
[HttpPost]
public ActionResult Create (Company company)
{
try
{
//Create company
CompanyRepo.Create(company);
return null;
}
catch
{
return View("Error");
}
}
Je l'ai déjà débogué le actionmethod, mais il termine comme il se doit. Ainsi, les données envoient l'appel ajax sera traité et écrit à la DB. (La méthode d'action ne pas utiliser la partie de capture).
Pourquoi mon appel ajax donne toujours le message 'ajax appel ne succesful?
La solution
je GOT même problème avec revenir le résultat JSON. Ce que je l'ai fait est de mettre dataType à « texte JSON » :)) Si cela ne l'aide essayer d'obtenir des informations supplémentaires en acquérant les détails de votre erreur, i.e.:.
$.ajax({
url: '/Company/Create',
type: 'POST',
data: JSON.stringify(CreateCompany),
dataType: 'text json',
contentType: 'application/json; charset=utf-8',
success: function () {
alert('ajax call successful');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("XMLHttpRequest=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);
}
});
BTW: J'ai trouvé cela quelque part de solution sur le StackOverflow
Autres conseils
Pourquoi êtes-vous de retour null
en cas de succès dans votre action de contrôleur? Retour quelque chose à succès comme par exemple un objet JSON (d'autant plus que vous avez indiqué dans votre demande d'AJAX que vous attendez une réponse JSON du serveur - en utilisant le réglage de dataType: 'json'
- qui devrait être j
minuscule par la voie):
return Json(new { success = true });
Ne serait-ce pas plus facile:
$.post("/Company/Create", function (d) {
if (d.Success) {
alert("Yay!");
} else {
alert("Aww...");
}
}, "json");
Et dans votre contrôleur.
[HttpPost]
public JsonResult Create(
[Bind(...)] Company Company) { <- Should be binding
if (this.ModelState.IsValid) { <- Should be checking the model state if its valid
CompanyRepo.Create(Company);
return this.Json(new {
Success = true
});
};
return this.Json(new {
Success = false
});
}