我正在使用jQuery将表单发布到使用AJAX的处理程序脚本中。完成后,我将刷新页面-但是,除非我在页面上执行Shift-F5刷新,否则内容实际上不会刷新。这显然很糟糕,因为用户认为他们的提交没有进行。
我尝试过进行location.href = location.href。
我试图做location.reload(true);
我尝试将随机变量附加到页面的末尾以强制其加载新的变量。
我尝试放入用户控件的Page_Load以查找这些变量,如果存在,请重新绑定数据
我已尝试执行与上述相同的操作,但此用户控件的父页面除外。
我尝试禁用此页面的页面缓存。
我尝试禁用控件的状态状态(一个文字控件,该控件在后端显示组装的HTML表和表单)
$(".saveButton").click(function () {
$(".timeEntry").each(function () {
var dayCount = $(this).attr('data-day');
var chargecode = $(this).attr('data-chargecodeid');
var chargetype = $(this).attr('data-chargetypeid');
$.ajax({
type: "GET",
url: "_PostTime.aspx",
data: {
"UserID": "<%: HttpContext.Current.User.Identity.GetUserId() %>",
"Hours": $(this).val(),
"DayCount": dayCount.replace("Day", ""),
"ChargeCodeID": chargecode,
"ChargeTypeID": chargetype
},
datatype: "text",
success: function () {
//Do nothing
}
});
});
location.reload();
});
正确执行上述代码会提交表单,并在完成后重新加载页面-但是,无论我尝试什么,页面都将保持原始状态,直到用户手动刷新浏览器。>
在这一点上,我对正在发生的事情一无所知。我已经确认我的ASP.NET代码中没有错误,并且浏览器控制台中也没有jQuery错误。
答案 0 :(得分:0)
Ajax是异步的。这意味着,如果将代码放在$.ajax()
之后,它将不会在ajax之后运行。
,因此您应该等待所有ajax调用完成,然后刷新页面。
您可以使用.ajaxStop
这样的东西。
//after loop
$( document ).ajaxStop(function() {
location.reload();
});
答案 1 :(得分:0)
尝试将重载移至成功功能。成功后将重新加载:
$(".saveButton").click(function () {
$(".timeEntry").each(function () {
var dayCount = $(this).attr('data-day');
var chargecode = $(this).attr('data-chargecodeid');
var chargetype = $(this).attr('data-chargetypeid');
$.ajax({
type: "GET",
url: "_PostTime.aspx",
data: {
"UserID": "<%: HttpContext.Current.User.Identity.GetUserId() %>",
"Hours": $(this).val(),
"DayCount": dayCount.replace("Day", ""),
"ChargeCodeID": chargecode,
"ChargeTypeID": chargetype
},
datatype: "text",
success: function () {
window.location.reload(); // like this
}
});
});
});