2017-08-29 91 views
0

我想重定向到像(站点名称)/ p /(一些4位数字代码)这样的位置。window.location不按要求工作

我试着使用:

window.location.href = "/p/(code)" 

当以上没有工作,我尝试了以下内容:

$('#search-product-code').click(function(){ 
    var lookUp = $('#product-search-input').val(); 
    if (lookUp > 999 && lookUp < 9999) { 
     console.log(window.location.protocol + "//" + window.location.hostname + "/p/" + lookUp); 
     if (window.location.port == "") { 
      window.location = window.location.protocol + "//" + window.location.hostname + "/p/" + lookUp; 
     } else { 
      window.location = window.location.protocol + "//" + window.location.hostname + ":" + window.location.port + "/p/" + lookUp; 
     } 
    } 
}); 

我得到的UAT和本地主机不同的问题。

在UAT从URL变化: https://(sitename)/in-storehttps://p/(code)

在本地: https://localhost:9002/in-storehttps://localhost:9002/p/undefined/p/(code)/未定义/ P/一部分每次我尝试上面的代码运行像https://localhost/p/undefined/p/undefined/p/(code)追加。

上述两种方法都为我提供了相同的结果。

+0

你可能需要<基本href = '(你的网站基本路径)'>'元素添加到'您的index.html –

+0

“当以上没有工作” 这应该工作得很好,只要你有'code'的正确值。当你尝试时究竟产生了什么?除非您重定向到不同的服务器,否则手动设置协议和主机名是不必要的。 (''标记也是不必要的,除非你需要使用除了服务器根以外的基础url。) –

+0

@DanielBeck结果在两种方法中都是一样的。 –

回答

-1

如果您需要在当前站点的同一个域内更改您的位置(重定向),则可以使用window对象的pathname

window.location.pathname = '/p/45987344' 

您应该能够从下面的代码片段中获得所需的结果。不管你的localhost方面如何。你也不需要检查port。这应该在您的lookUp值介于可接受值之间时起作用。

如果没有,那么你可能会在代码区之前的其他地方有一些冗余的代码操纵你的URL。

我已经注明了视觉帮助的实际位置更改代码。

$('#search-product-code').click(function(){ 
 
    var lookUp = $('#product-search-input').val(); 
 
    if (lookUp > 999 && lookUp < 9999) { 
 
     console.log(location + "/p/" + lookUp); 
 
     //location = "/p/" + lookUp; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<input id="product-search-input" /> 
 
<button id="search-product-code">Search</button>

+0

这应该与设置'window.location.href'完全相同。 –

+0

不,它不会@DanielBeck,它设置'pathname',这样你就可以保持域而不改变它。 'window.location.href'提供了整个href,''pathname'只提供路径名,现在我不需要编码协议+域 – lscmaro

+0

尝试在任何web上设置'window.location.href =“/ foo”'服务器。甚至只是'window.location =“/ foo”'。两者与设置'pathname'都有相同的结果。除非指定了不同的主机名,否则隐含地保留主机名。 –