Javascript 视图在Ajax调用后不刷新
我通过一个Ajax调用(我想是吧?)向我的控制器提交一个数据表单以进行处理。保存行后,我希望重定向到最初加载表单的控制器中的原始HttpGet操作 我发现ajax调用有效,控制器动作启动,数据保存到数据库中。但是,重新加载视图后,屏幕不会刷新 我在控制器中的操作的“返回视图(模型)”上有一个断点,该断点会触发,但屏幕不会刷新。如果我使用firebug并查看html,我会看到新行应该显示在我的视图中。但是,屏幕似乎根本没有重新加载 我的Javascript:Javascript 视图在Ajax调用后不刷新,javascript,ajax,asp.net-mvc,jquery,Javascript,Ajax,Asp.net Mvc,Jquery,我通过一个Ajax调用(我想是吧?)向我的控制器提交一个数据表单以进行处理。保存行后,我希望重定向到最初加载表单的控制器中的原始HttpGet操作 我发现ajax调用有效,控制器动作启动,数据保存到数据库中。但是,重新加载视图后,屏幕不会刷新 我在控制器中的操作的“返回视图(模型)”上有一个断点,该断点会触发,但屏幕不会刷新。如果我使用firebug并查看html,我会看到新行应该显示在我的视图中。但是,屏幕似乎根本没有重新加载 我的Javascript: <script type="te
<script type="text/javascript">
$(document).ready(function () {
$('.btnSubmitNewCard').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') {
alert('Redirecting...');
window.location = '@Url.Action("EditBankAccount", "BankAccount", new {accountId = Model.Id})';
}
},
error: function () {
alert("Oh no");
}
});
});
});
</script>
然后是从“RedirectToAction”调用中调用的控制器操作:
[HttpGet]
[Authorize]
[OutputCache(Location = System.Web.UI.OutputCacheLocation.None)]
public ActionResult EditBankAccount(int? bankAccountId)
{
var model = new BankAccountModel();
if (bankAccountId != null)
{
....
}
return View(model);
}
最后一行“返回视图(模型)”确实会被调用。如果我检查“model”,我会看到保存到数据库的新行。但是,正如我所说,屏幕不会刷新
有人能告诉我为什么,以及我如何修复/改善我的情况吗?试试这个……你的方法
SaveBankCard
在controller和ajax中调用EditBankAccount
,然后只在ajax或controller中调用它
<script type="text/javascript">
$(document).ready(function () {
$('.btnSubmitNewCard').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 != 0) **//if your method return int else check it null if your method return string**
{
alert('Redirecting...');
window.location = '@Url.Action("EditBankAccount", "BankAccount", new {bankAccountId= Model.Id})'; **//change name of parameters**
}
},
error: function () {
alert("Oh no");
}
});
});
});
</script>
在ajax成功回调中,
result
包含哪些数据?我不确定如何100%检查。你能帮忙吗?只要打开你的控制台(按浏览器上的F12键),你就会看到结果。我的结果似乎总是“未定义”,因为我正在使用警报。在调试模式下,哪些选项卡可以查看数据?我有所有的浏览器-哪一个最好调试?
<script type="text/javascript">
$(document).ready(function () {
$('.btnSubmitNewCard').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 != 0) **//if your method return int else check it null if your method return string**
{
alert('Redirecting...');
window.location = '@Url.Action("EditBankAccount", "BankAccount", new {bankAccountId= Model.Id})'; **//change name of parameters**
}
},
error: function () {
alert("Oh no");
}
});
});
});
</script>
public int 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(2000 + expiryYear, expiryMonth, 1)
};
int id = new BankAccountService().SaveCard(card);
int bankAccountId = accountId;
return bankAccountId ;
}