2017-06-30 60 views
0

我有下面的代码window.location.href不被修改

var windowHref = window.location.href; 
    if (windowHref.includes('/project/')) { 
     var splitURL = windowHref.split('/'); 
     window.location.href = windowHref.substring(0, windowHref.indexOf('#/project')) + '?projectId=' + splitURL[splitURL.length - 2]; 
    } 
    window.location.reload(true); 

的上面的代码执行前,中window.location.href

https://localhost:44301/default.aspx#/project/16a76abd-5b5b-4c63-822f-2bfd7f133adc/home

和执行后,我想它的值要像

https://localhost:44301/default.aspx?projectId=16a76abd-5b5b-4c63-822f-2bfd7f133adc

但当线

window.location.href = windowHref.substring(0,windowHref.indexOf('#/project')) + '?projectId=' + splitURL[splitURL.length - 2];

被执行时,window.location.href保持不变。

windowHref.substring(0,windowHref.indexOf('#/project')) + '?projectId=' + splitURL[splitURL.length - 2];

结果是

https://localhost:44301/default.aspx?projectId=16a76abd-5b5b-4c63-822f-2bfd7f133adc

我在做什么错?

+0

有一些PHP或JavaScript,与'$ _GET' URL工作,这改变了它? – PHPglue

+0

不,没有。 –

回答

0

我建议删除行window.location.reload(true);,因为它是不必要的重定向客户端新页面使用window.location.href时

var href = window.location.href; 
var index = href.indexOf('#/project/'); 
if(index!==-1){ 
    var splitURL = href.substring(index,href.length).replace('#/project/','?projectId=').split('/'); 
    window.location.href = splitURL[0]; 
} 
+0

我需要这个重定向到修改后的URL。您能否建议我重定向到所需的网址'https:// localhost:44301/default.aspx?projectId = 16a76abd-5b5b-4c63-822f-2bfd7f133adc' –

+0

window.location.href将重定向到您分配给它的URL。所以基本上你的代码应该工作..我假设如果你删除了window.location.reload行,并且如果你的URL包含'/ project /',你的代码应该做你正在寻找的东西。 plus based on information on https://www.w3schools.com/jsref/jsref_includes.asp使用JS字符串的“包含”功能,您的浏览器必须支持它。 – Fered

+0

即使在删除它之后,“window.location.href”也没有被分配新的值。 –