2016-11-12 82 views
0

我有2天的时间想弄明白这一点。我想reloasd的网址,如果你再次点击不附加相同的东西使用javascript/jquery更改网址并使用该新网址重新加载页面

我想改变的网址和重新加载页面使用的功能,但它是毫无价值的。

我总是得到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 +")"; 
}; 

+0

我只是好奇,但不能使用链接href而不是函数? –

回答

0

您使用的是错误的表达。尝试改用:

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

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

+0

打我:)但就是这样。 –

+0

它的工作原理,但我希望它也刷新页面与该网址 –

+0

@GilbertoQuintero如果你想页面重新加载,你必须删除#号的散列符号,因为它阻止了页面重新加载。 –

0

另一种方法是这样的:

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); 
}; 
0

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

的内容但浏览器在响应尝试在window.location.search中插入散列字符的尝试方面有所不同。 IE 11会抛出错误,指出该URL无效。 Firefox默认将'#'转换为编码'%23'的百分比。然而,另一个浏览器可能会愉快地将'#'字符放在搜索字段中,但在组装来自window.location对象的整个URL时将其视为“片段”字段的开头。

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

另一方面,单独对散列片段的更改不会触发页面刷新并用于内部文档导航。浏览器不要在发出页面请求时向服务器发送散列片段的内容,但可能使用片段来滚动返回的文档。

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

相关问题