如何通过将参数传递给 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 刷新页面的主要内容,如果未能解决你的问题,请参考以下文章