Javascript启动,没有我的要求

Javascript启动,没有我的要求,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我有一个MVC4应用程序,在布局(旧版的母版页)上,我有一些javascript: <script type="text/javascript"> $(document).ready(function () { $('.btnSubmit').on('click', function () { var data = { username: $('.txtUsername').val(), password: $(

我有一个MVC4应用程序,在布局(旧版的母版页)上,我有一些javascript:

<script type="text/javascript">
        $(document).ready(function () {
            $('.btnSubmit').on('click', function () {
                var data = { username: $('.txtUsername').val(), password: $('.txtPassword').val(), rememberMe: $('.cbRemember').val() };

                $.ajax({
                    url: '@Url.Action("LoginUser", "User")',
                    type: "POST",
                    contentType: "application/json",
                    data: JSON.stringify(data),
                    cache: false,
                    async: true,
                    success: function (result) {
                        console.log(result.toString());
                        if (result.Success == 'true') {
                            window.location = '@Url.Action("Index", "Home")';
                        } else {
                            alert(result.Message);
                        }
                    },
                    error: function () {
                        alert("Error in input");
                    }

                });
            });
        });
    </script>
问题发生在重定向操作上。。。当该视图(包括布局)重新加载时,会触发布局javascript


编辑:我现在看到是btnSubmitNewCard javascript触发了两次。单击事件发生时(预期),以及回发发生时。为什么会发生第二个事件?

检查状态的行中没有定义:

if(result.Success='true'){

因为结果包含EditBankAccount操作视图的html响应字符串,并且没有“Success”属性。 您可以将breakepoint放入调试器并查看。您可以使用debugger;语句作为断点检查:-

$('.btnSubmitNewCard').click(function () {...});

为什么你首先要做RedirectToAction,而不是从Java脚本手动使用纯格式/重定向?顺便说一句,如果你根本不渲染它,为什么视图在ajax调用后会重新加载?我对这一点很陌生。如果我做错了什么,一定要告诉你。控制器方法会做一些工作,然后,我希望它基本上就是b确认呼叫页面。我不确定您的第二个问题。默认情况下,您不能使用ajax请求重定向。您需要使用javascript手动进行重定向。ajax请求将遵循HTTP 302重定向代码。请参见以下问题:谢谢。我不明白为什么会执行该脚本,因为没有单击我的登录按钮。啊,我请看,失败的其实不是我的登录代码,而是在重新加载页面时触发了“btnSubmitNewCard”单击。如何防止这种情况发生?它在单击事件时触发,然后在重新加载页面时再次触发。要使用debugger;语句,您需要在浏览器中运行开发人员工具。例如,在internet Explorer中按F12或者Firefox,在您期望断点被命中之前。
public ActionResult SaveBankCard(string cardNumber, string cardHolder, int expiryMonth, int expiryYear, string active, int accountId)
{
    var card = new AccountCardDto
        {
            Id = 0,
            AccountId = accountId,
            Active = active == "on",
            CardHolderName = cardHolder,
            CardNumber = cardNumber,
            ExpiryDate = new DateTime(expiryYear, expiryMonth, 1)
        };

    int id = new BankAccountService().SaveCard(card);
    return RedirectToAction("EditBankAccount", new { bankAccountId = accountId });

}
$('.btnSubmitNewCard').click(function () {...});