Renvoyer Json du contrôleur, jamais un succès

Je poste avec succès sur mon contrôleur avec le code suivant, cependant, le succès n’est jamais uniquement une erreur. Qu’est-ce que je fais mal?

JS:

$.ajax({ url: '/Home/Subscribe', type: 'POST', dataType: 'json', data: { email: $('#sube').val() }, success: function (data) { // get the result and do some magic with it alert(data.foo); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); } }); 

Manette:

 [HttpPost] public JsonResult Subscribe(ssortingng email) { return Json(new { foo = "bar", baz = "Blech" }); } 

Dans IE, appuyez sur F12 pour ouvrir les outils de développement. Allez sur l’onglet Réseau et cliquez sur Démarrer Profiler. Envoyez une demande à votre action Subscribe – dans la liste ci-dessous, vous verrez les détails de la demande envoyée et le code d’état renvoyé. Double-cliquez sur demande pour voir les détails – vous pouvez alors voir le corps de votre réponse. Si la demande a échoué avec une erreur de serveur, vous verrez cette erreur dans le corps de votre réponse.

Une mauvaise chose que je vois dans votre code est que vous avez codé en dur l’URL:

 url: '/Home/Subscribe' 

Tu ne devrais jamais faire ça. Vous devez toujours utiliser les utilitaires d’URL lors de la génération d’URL dans une application ASP.NET MVC:

 url: '@Url.Action("Subscribe", "Home")' 

Vous dites également que le rappel d’erreur est toujours touché, mais vous n’avez pas dit ce que vous avez observé dans la barre d’outils de FireBug ou Chrome Developer lorsque vous avez essayé d’parsingr la demande AJAX. Si vous aviez fait cela, vous auriez vu la cause exacte de l’échec de la demande, car vous auriez vu quelle demande était envoyée au serveur et quelle réponse le serveur renvoyait au client.

Voici l’extrait jQuery ajax qui fonctionne. Votre contrôleur a l’air bien. Je suppose que vous avez vérifié qu’il s’appelait en utilisant un point d’arrêt.

 var p = { email: $('#sube').val() }; $.ajax({ url: '@Url.Action("Subscribe", "Home")' type: 'POST', data: JSON.ssortingngify(p), dataType: "text json", contentType: "application/json", success: function (data) { // get the result and do some magic with it alert(data.foo); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); } });