首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >window.location不更新

window.location不更新
EN

Stack Overflow用户
提问于 2016-10-12 19:54:04
回答 2查看 404关注 0票数 1

我有一个Javascript函数,如下所示,用于我的HTML表单。我得到的window.location.href作为来源。然后,我将删除两个不需要的查询字符串参数。这部分工作正常(从第一次和第二次警报屏幕截图中可以看到)。

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

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

代码语言:javascript
复制
function sort_table(strHead)
        {

            var source = window.location.href;
            alert("SOURCE-----"+source)

            var removed = excludeQueryString (source,"SortColumnAutoRefresh");
            removed = excludeQueryString (removed,"SortOrderAutoRefresh");

            alert("REMOVED-----"+removed);

            //location.replace(removed);
            document.location.replace(removed);

            alert("LATESTLoc-----"+window.location);
            //alert("***"+document.location);

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

    function excludeQueryString(url, parameter) 
    {

    var urlparts= url.split('?');   
    if (urlparts.length>=2) {

        var prefix= encodeURIComponent(parameter)+'=';
        var pars= urlparts[1].split(/[&;]/g);

        for (var i= pars.length; i-- > 0;) 
        {    
            if (pars[i].lastIndexOf(prefix, 0) !== -1) 
            {  
                pars.splice(i, 1);
            }
        }

        url= urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : "");
        return url;
    } 
    else 
    {
        return url;
    }
    }

警报

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-13 14:52:34

谢谢你的评论。

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

代码语言:javascript
复制
    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();
    }
票数 0
EN

Stack Overflow用户

发布于 2016-10-12 20:12:42

这是我现在提出来的一个功能:

代码语言:javascript
复制
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;
  }
}

传递给它一系列糟糕的参数,如下所示:

代码语言:javascript
复制
onload = function () {
    redirectOnBadArgs([ "badarg1", "badarg2" ]);
};

记住,您应该在页面加载时重定向,而不是在提交时重定向,否则不会发布任何数据!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40007210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档