window.location没有更新

时间:2016-10-12 19:54:04

标签: javascript html

我有一个Javascript函数,如下面的HTML表单所示。我将With ActiveSheet .Range("B2:K55").Select .PageSetup.PrintArea = "$B$2:$K$55" End With 作为来源。然后我从中删除两个不需要的查询字符串parmae​​ters。这部分工作正常(从第一和第二个警报截图中可以看出)。

但是使用新值设置window.location.href不起作用。第三个警报(来自window.location或甚至document.location)仍包含不需要的查询字符串参数。当我观察到POST url时,它有不需要的查询字符串参数。

如何通过删除不需要的查询字符串参数来更新window.location(以便POST不会有不需要的查询字符串参数)?

location

提醒

enter image description here

2 个答案:

答案 0 :(得分:1)

这是我现在掀起的一个功能:

function redirectOnBadArgs(badargs)
{
  var i, j, newloc, args, segs, isbad, redirect;

  redirect = false;
  newloc = location.href.split("?");

  if (newloc.length === 2)
  {
      args = newloc[1].split("&");

      i = 0;
      while (i < args.length)
      {
        isbad = false;
        for (j = 0; j < badargs.length; j++)
        {
          if (args[i].indexOf(badargs[j] + "=") === 0)
          {
            isbad = true;
            break;
          }
        }

        if (isbad)
        {
          args.splice(i, 1);
          redirect = true;
          continue;
        }

        i++;
      }

      newloc[1] = args.join("&");
  }

  newloc = newloc.join("?");

  if (redirect)
  {
    // DEBUG: alert("redirecting to " + newloc);
    location.href = newloc;
  }
}

传递一系列错误的参数,如下所示:

onload = function () {
    redirectOnBadArgs([ "badarg1", "badarg2" ]);
};

请记住,您应该重定向页面加载,而不是提交,或者您不会发布任何数据!

答案 1 :(得分:0)

感谢您的评论。

我评论了提交(POST)并使用location.href进行GET重定向。现在,查询字符串按预期工作。

    function sort_table(strHead)
    {

        var source = window.location.href;
        var removed = excludeQueryString(source,"SortColumnAutoRefresh");
        removed = excludeQueryString(removed,"SortOrderAutoRefresh");
        removed = excludeQueryString(removed,"SortColumnClick");
        removed = excludeQueryString(removed,"SortOrderClick");

        var sortColumn = strHead;
        var clickOrder = getClickOrder(sortColumn);
        removed = removed + "&SortColumnClick="+sortColumn+"&SortOrderClick="+clickOrder;

        //GET - Redirect
        location.href = removed;


        //document.getElementById('hidSort').value=strHead;
        //document.frmCountList.submit();
    }