我有一个Javascript函数,如下面的HTML表单所示。我将With ActiveSheet
.Range("B2:K55").Select
.PageSetup.PrintArea = "$B$2:$K$55"
End With
作为来源。然后我从中删除两个不需要的查询字符串parmaeters。这部分工作正常(从第一和第二个警报截图中可以看出)。
但是使用新值设置window.location.href
不起作用。第三个警报(来自window.location或甚至document.location)仍包含不需要的查询字符串参数。当我观察到POST url时,它有不需要的查询字符串参数。
如何通过删除不需要的查询字符串参数来更新window.location(以便POST不会有不需要的查询字符串参数)?
location
提醒
答案 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();
}