2016-05-30 20 views
0

現在、私はウェブサイト上で実行されているJavaScriptの問題を抱えています。私は新しいページにリダイレクトしようとしていますが、リダイレクトURLを設定する代わりに、それを渡すページに既存のURLの末尾に連結するようです。例えばwindow.locationが新しい値に正しく設定されていません

私はwww.stackoverflow.com/questionsに現在の午前www.stackoverflow.com/questions/askにURLを移動したい場合は、私の出力は、それをコンソールにURLを含む変数は、上記の出力

正しく

var nextPage = window.location.hostname + data.redirectUrl + "?confirmationtype=success"; 
console.log(nextPage); 
window.location.href = nextPage; 
が表示されたら www.stackoverflow.com/questions/www.stackoverflow.com/questions/ask

なりますwww.stackoverflow.com.au/questions/askになりますが、www.stackoverflow.com/questions/www.stackoverflow.com/questions/ask

私は検索しましたが、多くの場合、に関連しているようですフォームのメソッドが、私はこれが私のページでどのように問題になるかを見ることはできませんし、これらの呼び出しをトリガするポーリングタイマーメソッドを使用しているので、ページの投稿は要素ではありません。同じレイアウトを使用しているonpost="return false"の他のページも投稿できません:S

助けていただければ幸いです。

+0

あなたの 'data.redirectUrl'には何がありますか? –

+0

@AkashAmin redirectUrlにはURLパス(ホストを除く)が含まれていますので上の例では '/ questions/ask'となります –

答えて

1

プロトコルのないURL(「http:」)は相対URLになります。window.locationを設定しようとすると、ナビゲーションは実行されません。

に似た何か:

var nextPage = window.location.hostname + data.redirectUrl + "?confirmationtype=success"; 
console.log(nextPage); 
window.location = "http://" + nextPage; 

あなたはwindow.location.protocol代わりに "http://" を使用することができ、あなたは上記のコードでwindow.locationまたはwindows.location.hrefを使用することができます。

サンプルには関数呼び出しである奇妙なwindow.location.href(nextPage);が表示されていますが、hrefは関数ではありません。

+0

hrefで作成したタイプミスを修正しましたが、相対URL私はローカルホストから実行していますので、私のURLにはそのURLのhttp://コンポーネントが含まれていません!私はこれをテストし、それが動作するかどうかを確認します:) –

+0

成功! HTTPプレフィックスがないときにこのメソッドの動作が変化するのは非常に奇妙です。なぜこれが起こるのでしょうか? –

+0

@MatthewPigram url without scheme(protocol)は、サーバーとの会話方法を定義していないので、ブラウザーがブラウザーにナビゲートする方法はありません。ブラウザのドキュメントサイト(MDN - https://developer.mozilla.org/en-US/docs/Web/API/Location)で、詳細を読んだり、仕様へのリンクを見つけることができます。 –

関連する問題