我有一个Javascript函数,如下所示,用于我的HTML表单。我得到的window.location.href作为来源。然后,我将删除两个不需要的查询字符串参数。这部分工作正常(从第一次和第二次警报屏幕截图中可以看到)。
但是,使用新值设置location不起作用。第三个警报(来自window.location甚至document.location)仍然包含不必要的查询字符串参数。当我观察POST url时,它有不需要的查询字符串参数。
如何通过删除不需要的查询字符串参数(以便POST不会有不需要的查询字符串参数)来更新window.location?
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;
}
}警报

发布于 2016-10-13 14:52:34
谢谢你的评论。
我对提交(POST)进行了注释,并使用location.href进行重定向。现在,查询字符串正在按预期工作。
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();
}发布于 2016-10-12 20:12:42
这是我现在提出来的一个功能:
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" ]);
};记住,您应该在页面加载时重定向,而不是在提交时重定向,否则不会发布任何数据!
https://stackoverflow.com/questions/40007210
复制相似问题