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

发布于 2024-12-24 01:06:22 字数 1685 浏览 3 评论 0原文

这是我的 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)”永远不会得到满足。我可以看到数据正在进入数据库?

Here is my AJAX call:

        $(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;
        });

Here is my controller:

    [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" });

        }
    }

Why is it that my AJAX call's conditional "if (response.Sucess)" is never satisfied. I can see that the data is making it into the database?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉墨 2024-12-31 01:06:22

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

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

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

You're returning a JSON object that looks like this: { result: "success" }, but in your client code you're checking for a property called Success. This doesn't work because the object that's returned doesn't contain a property called Success.

Your code should check for if (response.result === 'success') instead. That should work.

To make the check prettier, I generally return an object that looks like { success: true }. In this case, the code can be written as if (response.success), which is a lot easier on the eyes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文