我有一个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,它具有类似的功能,从表单中获取数据,并将其传递给控制器进行处理。
<script type="text/javascript">
$(document).ready(function () {
$('.btnSubmitNewCard').on('click', function () {
var data = { cardNumber: $('.txtNewCardNumber').val(), cardHolder: $('.txtNewCardHolder').val(), expiryMonth: $('.txtNewExpiryMonth').val(), expiryYear: $('.txtNewExpiryYear').val(), active: $('.txtNewActive').val(), accountId: $('.Id').val() };
$.ajax({
url: '@Url.Action("SaveBankCard", "BankAccount")',
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("Oh no");
}
});
});
});
</script>
当我点击此代码链接的保存按钮时,代码触发,控制器方法顺利进行,数据存储,但是当我刷新屏幕时,我收到一个“未确定”错误上面的登录脚本。重新加载页面似乎会触发。我不确定为什么要解雇。它应该只是加载,准备开火,但它似乎被调用,并失败。
它调用的控制器是:
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 });
}
问题发生在RedirectToAction上...当该视图重新加载时,包括布局,布局javascript会触发。
编辑:我现在看到这是两次触发的btnSubmitNewCard javascript。一旦click事件发生(预期),然后再发生回发。为什么第二个事件发生?答案 0 :(得分:0)
您在检查状态的行中获得未定义:
if (result.Success == 'true') {
因为result包含带有EditBankAccount操作视图的html响应的字符串,并且没有“Success”属性。 您可以在调试器中放置breakepoint并查看。你可以使用调试器;声明为断点
答案 1 :(得分:0)
检查: -
$('.btnSubmitNewCard').click(function () {...});