2017-08-29 15 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-store/未定義/ P/部分は私がhttps://localhost/p/undefined/p/undefined/p/(code)のようなコードの上に実行しようとするたびに追加され https://localhost:9002/p/undefined/p/(code)します。

上記の両方の方法で同じ結果が得られます。

+0

あなたはおそらくあなたのindex.html –

+0

に '<基本のhref = '(あなたのサイトのベースパス)'>'要素を追加する必要があることがすべき "時には、上記動作しませんでした"あなたは 'code'の正しい値を持っていればうまく動作します。あなたがそれを試みたときに実際に何が起こったのですか別のサーバーにリダイレクトしない限り、プロトコルとホスト名を手動で設定する必要はありません。 –

+0

@DanielBeck結果は両方のアプローチで同じでした(Aルートはサーバールート以外のベースURLで作業する必要がない限り、 ''タグも不要です)。 –

答えて

-1

現在のサイトと同じドメイン内の場所(リダイレクト)を変更する必要がある場合は、windowオブジェクトのpathnameを使用できます。

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

下記のコードスニペットから目的の結果を得ることができます。ローカルホストの側面にかかわらず。 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'はENTIRE hrefを提供します。' pathname'はパス名のみを提供します。プロトコル+ドメインをコードする必要はありません。 – lscmaro

+0

'window.location.href ="/foo "'サーバ。または単に 'window.location ="/foo "'。どちらも 'pathname'の設定と同じ結果を出します。異なるものが指定されない限り、ホスト名は暗黙的に保持されます。 –

関連する問題