Javascript 好的,我现在得到了查询字符串,如何在不刷新页面的情况下删除它
我在文档中获得了查询字符串。准备好了,但是我想删除它,并在不刷新页面的情况下将值保存在全局变量中,但这永远不会发生Javascript 好的,我现在得到了查询字符串,如何在不刷新页面的情况下删除它,javascript,jquery,Javascript,Jquery,我在文档中获得了查询字符串。准备好了,但是我想删除它,并在不刷新页面的情况下将值保存在全局变量中,但这永远不会发生 var globalVar = null; $(document).ready(function () { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
var globalVar = null;
$(document).ready(function () {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
results == null ? null : decodeURIComponent(results[1].replace(/\+/g, " "));
if (results != null)
globalVar = results[1];
window.location.search = '';
});
这段代码一直在重新加载页面
编辑
这就是正在发生的事情
用户将电子邮件发送到一个链接,为了在站点的表中选择正确的行,我们使用querystring,因为使用哈希不起作用,TMG服务器会将其删除,所以一旦用户到达站点,我们就不再需要查询字符串,因为我们使用哈希,因为哈希不会在更改时刷新页面
编辑2
为什么不想保留查询字符串和哈希
因为我可以在不刷新的情况下更新哈希,而更新querystring会刷新页面:,所以我不希望它像这样
www.example.com/sites/fruitstore?fruitid=123fruitid=432您需要使用历史api,而不仅仅是将位置设置为新的位置 pushstate或replaceState允许您在不刷新页面的情况下更改浏览器中显示的url
此脚本还可以帮助您:您需要使用历史api,而不仅仅是将位置设置为新的位置 pushstate或replaceState允许您在不刷新页面的情况下更改浏览器中显示的url
此脚本还可以帮助您解决此问题:我认为您的重新加载问题来自以下几行:
window.location.search = ''
将为您提供处理浏览器URL历史记录的好方法:我认为您的重新加载问题来自以下几行:
window.location.search = ''
将为您提供处理浏览器URL历史记录的好方法:您将需要现代浏览器的历史API,具体来说,pushState将做到这一点
你可能会想使用一个库,比如f.e.,因为处理不同的浏览器可能会非常棘手…你需要现代浏览器的历史API,具体来说,pushState会做到这一点 您可能需要使用一个库,例如,因为处理不同的浏览器可能非常棘手…为此,请使用:
window.history.replaceState({}, document.title,
window.location.href.split('?')[0]);
replaceState使用给定值替换当前历史记录条目。第一个参数是数据参数,本例中未使用该参数。第二个参数是窗口标题。最后一个参数是新的URL。拆分将获取查询参数开始之前的所有内容。如果您需要遵循一个URL,那么您必须使用一个更复杂的URL重建函数
replaceState不会向历史记录添加新条目,这会阻止您用无用的值填充历史记录
有关更多信息,请参阅。为此使用:
window.history.replaceState({}, document.title,
window.location.href.split('?')[0]);
replaceState使用给定值替换当前历史记录条目。第一个参数是数据参数,本例中未使用该参数。第二个参数是窗口标题。最后一个参数是新的URL。拆分将获取查询参数开始之前的所有内容。如果您需要遵循一个URL,那么您必须使用一个更复杂的URL重建函数
replaceState不会向历史记录添加新条目,这会阻止您用无用的值填充历史记录
有关更多信息,请参阅
这段代码一直在重新加载页面
是的,很明显。相反,使用
if (location.search != '')
location.search = '';
一旦用户进入该站点,我们就不再需要查询字符串,因为我们正在使用哈希,因为哈希不会在更改时刷新页面
您可能还希望尝试,以便在位置栏中始终有一个可复制和可复制的查询字符串URL
这段代码一直在重新加载页面
是的,很明显。相反,使用
if (location.search != '')
location.search = '';
一旦用户进入该站点,我们就不再需要查询字符串,因为我们正在使用哈希,因为哈希不会在更改时刷新页面
您可能还想尝试,以便在位置栏中始终有一个可复制和可复制的查询字符串URL。为什么?这有什么意义?您到底想要什么?为什么要删除查询字符串?仅供参考,您可以使用进行此操作,但几乎没有很好的理由这样做。@NiettheDarkAbsol因为我使用window.location.hash afterwords在两个不同但相连的表中查找正确的行,查询字符串仅当有人来自外部时才使用。您必须使用历史API进行此操作。为什么?这有什么意义?您到底想要什么?为什么要删除查询字符串?仅供参考,您可以使用进行此操作,但几乎没有很好的理由这样做。@NiettheDarkAbsol,因为我使用window.location.hash afterwords在两个不同但相连的表中查找正确的行,只有当某人来自外部时,才需要使用历史API。听起来他希望至少第一次使用replaceState。听起来他希望至少第一次使用replaceState