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?

Était-ce utile?

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
    });
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top