使用javascript/jquery更改url并重新加载页面

Change url and reload page with that new url using javascript/jquery

本文关键字:加载 新加载 javascript jquery 更改 url 使用      更新时间:2023-09-26

我有2天的时间想弄清楚。我想重新加载url如果你再次点击,不要添加相同的东西

我正在尝试使用函数更改url并重新加载页面,但它毫无价值。

我总是在没有刷新网站的情况下得到url,或者我得到url重复,像这样www.mywebsite.com/#googtrans(en|es)#googtrans(en|es)

这是我的列表,当我点击任何链接都会触发函数

 <ul class="dropdown-menu dropdown-menu-left dropdown-language">
 <li><a class="english" onclick="changeLanguage('en');" >English</a></li>
 <li><a class="spanish" onclick="changeLanguage('es');">Spanish</a></li>
 <li><a class="chinesse" onclick="changeLanguage('en|zh-CN')">Chinesse</a></li>
 </ul>
<script type="text/javascript">
function changeLanguage(language) {
    window.location.search += "#googtrans(en|" + language +")";
};

您使用了错误的表达式。试着用:

function changeLanguage(language) {
    window.location = "#googtrans(en|" + language +")";
};

如果你想重新加载页面,你必须删除散列#并替换代码:window.location += "/googtrans(en|" + language +")";

function changeLanguage(language) {
    // get the origin of the url and define the language
    var host = window.location.origin;
    var language = 'french';
    //make sure the language is defined before this line
    window.location.replace(host + "#googtrans(en|" + language );
};

'#'字符不属于URL的搜索字段,因为'#'是URL的可选片段标识符的开始字符。"#"起始字符和片段标识符共同构成window.location.hash

的内容。

但是浏览器在如何响应在window.location.search中插入哈希字符的尝试方面有所不同。IE 11抛出一个错误,说URL无效。Firefox会将"#"默默转换为百分比编码"%23"。然而,另一个浏览器可能会很高兴地将"#"字符放在搜索字段中,但在从window.location对象组装整个URL时,将其视为"fragment"字段的开始。

注意,当搜索字段发生变化时,浏览器应该从服务器重新加载页面,丢弃本地或客户端和服务器之间的中间存储中的缓存副本。

另一方面,单独更改散列片段不会触发页面刷新,而是用于内部文档导航。浏览器在发出页面请求时不将哈希片段的内容发送给服务器,但是可以使用片段滚动返回的文档。

如果不知道服务器代码期望什么,很难说如何正确地解决问题。但是,通常,文本字符串值在客户端使用encodeURIComponent进行编码,而在服务器端不进行编码。