Условие if (response.Success) никогда не выполняется - PullRequest
0 голосов
/ 02 января 2012

Вот мой AJAX-вызов:

        $(document).ready(function () {
        $("#btnSignup").click(function () {
            $.ajax({
                type: "POST",
                dataType: 'json',
                url: "/Newsletter/Signup",
                data: $('#signupForm').serialize(),
                success: function (response) {
                    if (response.Success) {
                        $('#signupMessage').show(0);
                    }
                    else {
                        showValidationErrors(response.Data);
                    }
                }
            });
            return false;
        });

Вот мой контроллер:

    [HttpPost]
    public JsonResult Signup(FormCollection values)
    {
        var newsletterSubscriber = new newsletterSubscriber();
        TryUpdateModel(newsletterSubscriber);

        try
        {               
            newsletterSubscriber.newslettersubscriber_firstname = values["firstName"];
            newsletterSubscriber.newslettersubscriber_lastname = values["lastName"];
            newsletterSubscriber.newslettersubscriber_email = values["emailAddress"];    

            //Save Subscriber
            wildlifeDB.AddTonewsletterSubscribers(newsletterSubscriber);
            wildlifeDB.SaveChanges();

            //return RedirectToAction("Index");
            return Json(new { result = "success" });

        }
        catch
        {
            //Invalid - redisplay with errors
            //return View("Index");
            return Json(new { result = "failure" });

        }
    }

Почему мой AJAX-вызов условно "if (response.Sucess)" никогда не бываетдовольный.Я вижу, что данные попадают в базу данных?

1 Ответ

1 голос
/ 02 января 2012

Вы возвращаете объект JSON, который выглядит следующим образом: { result: "success" }, но в своем клиентском коде вы проверяете свойство с именем Success.Это не работает, потому что возвращаемый объект не содержит свойства с именем Success.

. Вместо этого ваш код должен проверять наличие if (response.result === 'success').Это должно работать.

Чтобы сделать проверку красивее, я обычно возвращаю объект, который выглядит как { success: true }.В этом случае код можно записать как if (response.success), что намного проще для глаз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...