2017-08-29 87 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'都有相同的結果。除非指定了不同的主機名,否則隱含地保留主機名。 –