【问题标题】:jQuery reload page not refreshing contentjQuery重新加载页面不刷新内容
【发布时间】:2019-06-06 14:57:32
【问题描述】:

我正在使用 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();
        });

正确执行上述代码会提交表单并在完成后重新加载页面 - 但是,无论我尝试什么,页面都会保持原始状态,直到用户手动刷新浏览器。 p>

在这一点上,我不知道发生了什么。我已经确认我的 ASP.NET 代码中没有错误,浏览器控制台中也没有 jQuery 错误。

【问题讨论】:

    标签: jquery asp.net webforms reload


    【解决方案1】:

    Ajax 是异步的。这意味着如果您在$.ajax() 之后放置代码,它将不会在ajax 之后运行。

    所以您应该等待所有 ajax 调用完成,然后刷新页面。 你可以使用.ajaxStop来做这样的事情。

    //after loop
    $( document ).ajaxStop(function() {
      location.reload();
    });
    

    【讨论】:

      【解决方案2】:

      尝试将重新加载移动到成功函数中。成功后会重新加载:

      $(".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
                          }                        
                      });                                                                                          
                  });
              });
      

      【讨论】:

      • 不幸的是,这不起作用,因为它是一个 foreach 循环,这意味着刷新将在第一次成功调用后开始发生。此外,这并没有解决根本问题 - 页面重新加载,它只是不刷新内容。最后,我在发帖寻求帮助之前已经尝试过了,但还是谢谢你。
      猜你喜欢
      • 2012-12-15
      • 2011-04-08
      • 1970-01-01
      • 2017-12-24
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多