如何通过将参数传递给 URL 来使用 jQuery 刷新页面

Posted

技术标签:

【中文标题】如何通过将参数传递给 URL 来使用 jQuery 刷新页面【英文标题】:How to refresh a page with jQuery by passing a parameter to URL 【发布时间】:2011-07-11 02:56:03 【问题描述】:

我正在使用 jQuery 刷新我的页面:

location.reload();

这很好用,但我想通过将参数传递给 URL 来刷新同一页面。

如何使用 jQuery 做到这一点?

例如:

如果我的网址是www.myweb.com,我想通过传递这样的参数来刷新它

  www.myweb.com?single

谢谢

【问题讨论】:

更新了我的答案以检查已更改的 URL 如果这确实是您想要的,那么这里的大多数答案都会起作用。但是,如果您真正想要的是使用更改的请求参数重新加载页面,请参阅我的回答:***.com/a/33361578/1450294 【参考方案1】:

您应该能够通过使用 location.href 来完成此操作

if(window.location.hostname == "www.myweb.com")
   window.location.href += "?single";

【讨论】:

谢谢你,这很好用。但是我在下次刷新时遇到了问题。 第一次 url 是:www.myweb.com/?single 第二次 url 是:www.myweb.com/?single?single 如何避免重复参数? if(window.location.hostname == "www.myweb.com" && window.location.search != '?single') ? 您可以尝试使用href,而不是使用.hostname,因为它将是完整的网址。位置对象的其他选项可在此处找到:developer.mozilla.org/en/DOM/window.location @KillerFish:一个不那么老套的解决方案:***.com/a/33361578/1450294【参考方案2】:

我会像这样使用REGEX 和.replace

window.location.href = window.location.href.replace( /[\?#].*|$/, "?single" );

【讨论】:

这个方法非常好,因为它不会将参数附加到现有参数! @BennyNeugebauer:不过,有时您会希望保留现有参数。对于这些情况,请参阅:***.com/a/33361578/1450294 优雅的解决方案!为了找到这个,我进行了广泛搜索。【参考方案3】:

您可以使用 javascript URLSearchParams。

var url = new URL(window.location.href);
url.searchParams.set('single','');
window.location.href = url.href;

[更新]:如果需要 IE 支持,请查看此线程:

SCRIPT5009: 'URLSearchParams' is undefined in IE 11

感谢@john-m 谈论 IE 支持

【讨论】:

如果需要 IE 支持,请查看此线程:***.com/questions/45758837/…【参考方案4】:

简洁很重要:我更喜欢window.location = "?single";window.location += "?single";

【讨论】:

【参考方案5】:

如果window.location.hash 为空,则不能在不使用正确函数的情况下为 location.href 分配新值(至少在 chrome 中测试过)。

试试window.location.replace

if (!window.location.hash) 
    
        window.location.replace(window.location.href + "?single")
     

【讨论】:

【参考方案6】:

你可以简单地完成:

var varAppend = "?single";
window.location.href = window.location.href.replace(".com",".com" + varAppend);

与提供的其他答案不同,没有不必要的条件检查。如果您正确地设计您的项目,您将让界面做出决策并在触发事件时调用该语句。

由于您的网址中只有一个“.com”,因此它只会将.com 替换为.com?single。我刚刚添加了varAppend,以防万一您希望将来使用不同类型的 url 变量更容易修改代码。

另一个注意事项: .replace 通过添加到 href 来工作,因为 href 返回一个包含完整 url 地址信息的字符串。

【讨论】:

【参考方案7】:

单击这些链接可查看这些更灵活、更强大的解决方案。它们是对类似问题的回答:

使用 jQuery 和 query 插件:window.location.search = jQuery.query.set('single', true); 没有 jQuery:Use parse and stringify on window.location.search

这些允许您以编程方式设置参数,并且与针对此问题建议的其他技巧不同,不会破坏已经具有参数的 URL,或者如果其他事情与您认为可能发生的情况不完全一样。

【讨论】:

【参考方案8】:
var singleText = "single";
var s = window.location.search;

if (s.indexOf(singleText) == -1) 
    window.location.href += (s.substring(0,1) == "?") ? "&" : "?" + singleText;

【讨论】:

【参考方案9】:

我正在使用 Jquery Load 来处理这个,对我来说非常有用。 从我的项目中查看我的代码。我需要刷新参数以将 Javascript 变量放入 php

if (isset($_GET['language']))
    $language = $_GET['language'];
else
    echo '<script>';    
    echo '  var userLang = navigator.language || navigator.userLanguage;';
    echo '  if(userLang.search("zh") != -1) ';
    echo '      var language = "chn";';
    echo '  else';
    echo '      var language = "eng";';
    echo '  ';
    echo '$("html").load("index.php","language=" + language);';
    echo '</script>';
    die;

【讨论】:

或者只是将url添加到dom中,然后使用jquery从参数中拉取。无需完整的 javascript 代码【参考方案10】:

我以前使用过这个确切的东西,我有一个自定义函数,我用于 if 语句,就像 Mark Coleman 提到的那样,并提交了他的答案的较短版本,但只是为了好玩,这是我的版本

function isOfType(sParam) 
   var sPageURL = window.location.search.substring(1);
   var sURLVariables = sPageURL.split('&');
   var sParameterName = sURLVariables[0];
   return (sParameterName.toLowerCase() == sParam)

一旦你有了这个功能,你就会像这样使用它

if(!isOfType('single'))
    window.location.href += '?single';

【讨论】:

在 2021 年,这个答案没有多大意义。现在每个现代浏览器都支持 URLSearchParam.has() --> developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/has

以上是关于如何通过将参数传递给 URL 来使用 jQuery 刷新页面的主要内容,如果未能解决你的问题,请参考以下文章

如何通过嵌入式 URL 将参数传递给 PowerBI Embedded

如何通过 URL 将参数传递给闪亮的应用程序

如何将参数传递给 URL 内某处的 routerLink?

如何将查询url参数传递给twig模板

如何将 url 中的参数传递给背包创建表单

将多个参数传递给 jQuery ajax 调用