jQuery重新加载页面未刷新内容

时间:2019-06-06 14:57:32

标签: jquery asp.net webforms reload

我正在使用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错误。

2 个答案:

答案 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
                    }                        
                });                                                                                          
            });
        });