Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 好的,我现在得到了查询字符串,如何在不刷新页面的情况下删除它_Javascript_Jquery - Fatal编程技术网

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