URLを変更し、jQueryを使用してリダイレクトする


132

私はこのようなコードを持っています、

<form id="abc">
  <input type="text" id="txt" />
</form>

そして今、私はこのようにリダイレクトしたいのですが、

var temp = $("#txt").val();
url = "http://example.com/" + temp;
window.location.replace(url);
// or window.location(url);

これを解決するためにjQueryにとにかくありますか?それでも私は持っていurl = http://example.comます。


どうもありがとうございました!今でもwindow.locationとwindow.location.replaceの違いがわかりません。私の例では、次のように自分のページにURLを投稿する必要があります:abc.com/abcを使用してabcでデータベースを検索するには、ユーザーがputと入力してEnterまたはボタンを押しますが、常にabc.comを返します?name = abcなので、submitイベントでトリガーして、URLをリダイレクトして必要なものに変更できると思いますが、それでも何も実行されません。以上ですが、ちなみにありがとうございます!
gacon 2009年

3
私はここでwindow.locationのとwindow.location.replaceの違いを説明した:stackoverflow.com/questions/846954/...
マティアスBynens

回答:


343

他の回答で述べたように、これを行うためにjQueryは必要ありません。標準のプロパティをそのまま使用できます。

しかし、あなたが違いを知っていないようだと思われるwindow.location.replace(url)としwindow.location = url

  1. window.location.replace(url)アドレスバーの現在の場所を新しい場所に置き換えます。関数を呼び出していたページは、ブラウザの履歴に含まれません。したがって、新しい場所でブラウザの戻るボタンをクリックすると、リダイレクトするJavaScriptを含むドキュメントにアクセスする前に表示していたページに戻ります。
  2. window.location = url新しい場所にリダイレクトします。この新しいページでは、ブラウザの[戻る]ボタンは、リダイレクトするJavaScriptを含む元のページを指します。

もちろん、どちらにも使用例がありますが、この場合は後者を使用する必要があるようです。

PS:あなたはおそらくhttp:あなたのJavaScriptの2行目で2 つのスラッシュを忘れました:

url = "http://abc.com/" + temp;

5
しかし、正確にするには、window.locationの代わりにwindow.location.hrefを設定する必要があります。最近は両方とも動作しますが、後者はオブジェクトです(もちろん、古いIEバージョンで文字列を割り当てることはサポートされていません...)
Victor

1
@Victor [引用が必要]
Mathias Bynens 2013年

1
@Victorそれはあらゆる古代のIEのバージョンこの休憩中には表示されません@ bobinceのコメントが正しい:。stackoverflow.com/a/10016109/96656#comment18225061_10016109
マティアスBynens

マイナス1. jQueryが不十分
VarunAgw

41

本当のことを言えば、私はまだあなたが必要とするものを得られませんが、

window.location(url);

する必要があります

window.location = url;

window.location参照を検索すると、そのことがわかります。


18

jQueryにはこのオプションがありません。オプションもありません。これは完全に有効なJavaScriptであり、jQueryがこのためのラッパー関数を提供する理由はありません。

jQueryは、JavaScriptの上にある単なるライブラリです。jQueryを使用していても、通常のJavaScriptを使用できます。

ところでwindow.locationは関数ではなく、次のように設定するプロパティです。

window.location = url;

jQueryにこのためのメソッドがないことを主張する反対票(不必要なやり過ぎであり、推奨されるべきではありませんが)$ jq(window).attr( "location"、 " yourdomain.com"); または$(location).attr( 'href'、url);
2013年

9
その反対票を取り消すことに賛成。Pimの応答は、「jQueryにはこのための特定のメソッドはない」と簡単に読むことができます。語彙のセマンティクスに反対票を投じることは、その特権の誤用です。
Nigel Angel

あなたが知っているので賛成です...「jQueryにはこのための特定のメソッドはありません」というのは正しいのですが、$ jq(window).attr( "location"、 "yourdomain。 com "); window.location = url;
ロドルフォアバルカ2018年

11
var temp="/yourapp/";
$(location).attr('href','http://abcd.com'+temp);

これを試してください...代替として使用されます


3

これを試して...

$("#abc").attr("action", "/yourapp/" + temp).submit();

その意味:

id「abc」を含むフォームを見つけ、それをattribute「action」という名前に変更して送信します...

これは私のために働く... !!!


1
笑、それはいくつかの面白いSです!でも私はアイデアが好きです。クリエイティブになるポイント!
Eric Bishard、2014年

-2

あなたはjqueryなしでそれをより簡単に行うことができます

location = "https://example.com/" + txt.value


それは機能せず、どうすればいいのかわかりません。ロケーションはグローバルではありません。window.locationです。編集:はい、検証されました。少なくともChromeでは機能しません。例をwindow.locationに更新することを検討してください
Shayne

奇妙な-私のクロム、Firefox、サファリで動作します-場所はグローバルプロパティです-たとえば、クロムコンソールで入力すると、location = 'https://google.com'ページが変わります-他のブラウザーで試しますか?
カミルキエチェフスキ

@Shayneを入力thisthis.locationてコンソールに入力すると、何が見えますか?
KamilKiełczewski19年

this.locationは、「this」がウィンドウを参照している場合にのみ機能します。そんなことはめったにありません。特にコードが移植可能または再利用可能ではないときに驚かされたくない場合は、明示的が常に暗黙的よりも優れています
Shayne

はい、あなたは正しいです-しかし私は疑問に思います:なぜあなたのブラウザでthiswindowオブジェクトを参照しないのですか(そして上記のスニペットは動作しません)?(ブラウザーのグローバルコンテキストでは、windows オブジェクトに設定する必要があります
KamilKiełczewski19年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.