if(response.Success)条件永远不会满足

时间:2012-01-02 03:41:32

标签: ajax json asp.net-mvc-2

这是我的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 个答案:

答案 0 :(得分:1)

您将返回一个如下所示的JSON对象:{ result: "success" },但在您的客户端代码中,您正在检查名为Success的属性。这不起作用,因为返回的对象不包含名为Success的属性。

您的代码应该检查if (response.result === 'success')。这应该有用。

为了使检查更漂亮,我通常会返回一个看起来像{ success: true }的对象。在这种情况下,代码可以写成if (response.success),这在眼睛上更容易。