jQueryでページを更新するにはどうすればよいですか?


2453

jQueryでページを更新するにはどうすればよいですか?


29
jQueryは簡単なDOM操作とイベントバインディングのためのjavascriptフレームワークなので、jQueryではなくjavascriptを要求することをお勧めします。
WoIIe 14

19
これにはjQueryは必要ありません。
スターダスト

13
これまで以上に関連性が高い:needsmorejquery.com
Kartik Chugh 2017

@Stardust jQueryを実行できる場合、JavaScriptで可能なすべてのことのため、jQueryを使用して行うことにはjQueryは必要ありません。
私は最も愚かな人物です

回答:


3828

使用location.reload()

$('#something').click(function() {
    location.reload();
});

このreload()関数はtrue、キャッシュではなくサーバーから強制的にリロードするように設定できるオプションのパラメーターを取ります。パラメータのデフォルトfalseはなので、デフォルトではページがブラウザのキャッシュから再読み込みされます。


29
これは私にはうまくいきませんでした。これはうまくいきました:window.location.href = window.location.href;
Yster

5
これは私にはうまくいきませんでした。 window.location.href=window.location.href;そして location.href=location.href;働いた。
twhar​​mon 2016年

23
window.location.reload(true);ハードリフレッシュします。それ以外の場合はデフォルトでfalseになります
Sagar Naliyapara 2017

@Sagar N、これは私にも有効です。ありがとうございました。過去数日間、さまざまなアプローチを試してみましたが、あなたの解決策が私を救いました。
Ludus H 2017

1
@FaridAbbas location.reload();は標準のJavaScriptです。jQueryは必要ありません。
Mark Ba​​ijens、

457

これは、jQueryがなくてもすべてのブラウザーで機能するはずです。

location.reload();

450

JavaScriptでページを更新する方法は無制限に複数あります。

  1. location.reload()
  2. history.go(0)
  3. location.href = location.href
  4. location.href = location.pathname
  5. location.replace(location.pathname)
  6. location.reload(false)

    ドキュメントをWebサーバーから再度プルする必要がある場合(ドキュメントのコンテンツが動的に変化する場合など)、引数をとして渡しますtrue

クリエイティブなリストを続けることができます:

var methods = [
  "location.reload()",
  "history.go(0)",
  "location.href = location.href",
  "location.href = location.pathname",
  "location.replace(location.pathname)",
  "location.reload(false)"
];

var $body = $("body");
for (var i = 0; i < methods.length; ++i) {
  (function(cMethod) {
    $body.append($("<button>", {
      text: cMethod
    }).on("click", function() {
      eval(cMethod); // don't blame me for using eval
    }));
  })(methods[i]);
}
button {
  background: #2ecc71;
  border: 0;
  color: white;
  font-weight: bold;
  font-family: "Monaco", monospace;
  padding: 10px;
  border-radius: 4px;
  cursor: pointer;
  transition: background-color 0.5s ease;
  margin: 2px;
}
button:hover {
  background: #27ae60;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


10
リストとjsfiddleの+1。私は質問があります。jsfiddle1と6では、生成されたページがリロードされると一瞬消えます。Chromeの開発ツールでは、ページが再生成されているのを確認できますが、再描画プロセスが異なることを説明できますか?お願いします。前もって感謝します。
Cԃաԃ

@Cԃաԃ違いはありません...おそらくキャッシュに問題がありますか?すぐに見ていきます。
IonicăBizău

2
1と6 (reload()/(false))は遅くなります。うーん。面白い。:)と1と6はreload()デフォルトのパラメータと同じですfalse
Cԃաԃ

location.href = location.href私がいつも使っているものですが、他の人に感謝します。非常に便利!+1
Amal Murali

1
@Cԃաԃ最後に、私はあなたが見るものを再現することができ、私はここで尋ねました
IonicăBizău

202

多くの方法が機能すると思います:

  • window.location.reload();
  • history.go(0);
  • window.location.href=window.location.href;

41
URLの末尾に#/ hashbangがある場合、これwindow.location.href=window.location.href;何もしませexample.com/something#blah
AaronLS

18
location.reload()との違いを誰かが疑問に思っている場合は、何history.go(0)もありません。w3.org/TR/html5/browsers.html#dom-history-goの HTML 5仕様の関連セクションでは、これらが同等であることを明示的に規定しています。go(delta)メソッドが呼び出されたとき、メソッドの引数が省略されているか、値がゼロの場合、ユーザーエージェントは、location.reload()メソッドが代わりに呼び出されたかのように動作する必要があります。」
Mark Amery、2015年

私のために働いた唯一のものはこれでした:window.location.href = window.location.href;
Yster

123

jQueryでページをリロードするには、次のようにします。

$.ajax({
    url: "",
    context: document.body,
    success: function(s,x){
        $(this).html(s);
    }
});

ここで私が使用したアプローチはAjax jQueryでした。Chrome 13でテストしました。次に、リロードをトリガーするハンドラーにコードを配置しました。URLは、ある""意味、このページを


68
反対投票。これは実際には質問の答えにはなりませんが、ページのHTMLをAjax応答に置き換える方法を示しています。これは、ページの再読み込みとは異なります。たとえば、私は現在、元の問題を解決するためにこれが機能しない状況で作業しています。
Marnen Laibow-Koser 2012

5
このようにHTML全体を再読み込みする際の1つの問題は、onload / readyイベントを手動で呼び出し、更新後に状態を保持したい以前に宣言された変数の上書きを軽減する必要があることです。
PassKit 2013年

3
あなたのコードと非常に慎重にならない限り、これはなりますが、彼らが接続しているコードを交換する前に、それらを取り外すことなく、イベントハンドラと、このようなを添付しましたメモリリークにつながります。
Daniel Llewellyn 2013

これを使用して、毎秒ダッシュボードをリロードします。ちらつきはゼロです!それは貧乏人の彗星/ json apiです。@DanielLlewellynらに感謝します。警告用。
William Entriken 14

3
このアプローチはページの一部のみを更新するのに役立つと数人がコメントしています。そうではありません。それらの人々は、contextパラメーターを誤解し$.ajaxており、何らかの形で何らかの魔法を実行すると期待しています。すべてのそれはされない設定thisのコールバック関数の値を。のURLへのAjaxは、""現在使用しているURLにヒットするため、通常は完全なHTML(<html>and <head>およびを含む<body>)がロードされます。この回答では、不要なものを除外しません。
Mark Amery、2015年

107

現在のページがPOSTリクエストによって読み込まれた場合は、

window.location = window.location.pathname;

の代わりに

window.location.reload();

なぜならwindow.location.reload()POSTリクエストによってロードされたページに呼び出された場合、確認のプロンプトが表示されます。


12
ただし、これによりクエリ文字列は失われますが、window.location = window.locationは失われません
mrmillsy

window.location = window.locationただし、@ mrmillsy も不完全です。現在のURLに脆弱(ハッシュバング)がある場合は何もしません。
Mark Amery

64

問題は、

JavaScriptでページを更新する方法

window.location.href = window.location.href; //This is a possibility
window.location.reload(); //Another possiblity
history.go(0); //And another

あなたは選択のために台無しにされています。


55

あなたは使いたいかもしれません

location.reload(forceGet)

forceGet ブール値でオプションです。

デフォルトはfalseで、キャッシュからページをリロードします。

ブラウザがサーバーからページを取得してキャッシュも削除するように強制する場合は、このパラメータをtrueに設定します。

あるいは単に

location.reload()

キャッシングですばやく簡単にしたい場合。


41

キャッシュ関連の動作が異なる3つのアプローチ:

  • location.reload(true)

    forcedReloadパラメータを実装するブラウザでlocation.reload()は、ページとそのすべてのリソース(スクリプト、スタイルシート、画像など)の新しいコピーをフェッチすることによって再ロードします。サーブはありません任意のキャッシュからリソースを-任意の送信せずに、サーバーからの新鮮なコピーを取得するif-modified-sinceか、if-none-matchリクエストのヘッダーを。

    ユーザーがブラウザで「ハードリロード」を実行するのと同じです。

    trueへの受け渡しlocation.reload()は、Firefox(MDNを参照)およびInternet Explorer(MSDNを参照)でサポートされていますが、普遍的にはサポートされておらず、W3 HTML 5仕様W3ドラフトHTML 5.1仕様WHATWG HTML Living Standardの一部ではありません。

    Google Chromeなどのサポートされていないブラウザでlocation.reload(true)は、と同じように動作しlocation.reload()ます。

  • location.reload() または location.reload(false)

    リロードページ、ページのHTML自体の新鮮な、非キャッシュされたコピーを取得し、実行するRFC 7234、ブラウザがキャッシュされたこと(スクリプトのような)任意のリソースに対する再検証要求を彼らがしている場合でも新鮮 RFC 7234ですが機能するようにブラウザを許可します再検証なしで。

    location.reload()呼び出しを実行するときにブラウザがキャッシュをどのように利用するかは、私が知る限り、指定または文書化されていません。上記の動作は実験により決定しました。

    これは、ユーザーがブラウザの「更新」ボタンを押すだけの場合と同じです。

  • location = location(またはlocation、そのプロパティへの、またはそのプロパティへの割り当てを含む、無限に多くの可能な技術)

    ページのURLにfragid / hashbangが含まれていない場合にのみ機能します。

    再フェッチまたは再確認せずにページをリロード任意の 新鮮なキャッシュからリソースを。ページのHTML自体が新しい場合は、HTTPリクエストをまったく実行せずにページをリロードします。

    これは、(キャッシュの観点から)ユーザーが新しいタブでページを開いた場合と同じです。

    ただし、ページのURLにハッシュが含まれている場合、これは効果がありません。

    繰り返しますが、ここでのキャッシング動作は、私が知る限り、特定されていません。テストで決定しました。

つまり、要約すると、次のように使用します。

  • location = locationページのURLにハッシュが含まれていない限り、キャッシュを最大限に使用します。この場合、これは機能しません。
  • location.reload(true)再検証せずにすべてのリソースの新しいコピーを取得する(ただし、これは普遍的にサポートさlocation.reload()れているわけではなく、Chromeなどの一部のブラウザーと同じように動作します)
  • location.reload() ユーザーが「更新」ボタンをクリックしたときの効果を忠実に再現するため。

場所の+1 =場所; それが提供するほとんどの答えよりも短いのですが、多くの人々がそれを示唆するように見える、唯一の欠点は、私が(location.reload一方推測することの読みやすさである)もう少しセマンティックある
Brandito

@Branditoさらに重要なことlocation = locationに、URLにハッシュがある場合は機能しません。fragidsを使用するサイトの場合-または、ページにリンクしている誰かがURLにfragidを追加する可能性があるサイトの場合-これにより、ページが壊れます。
マークアメリー2018

26

window.location.reload() サーバーからリロードし、すべてのデータ、スクリプト、画像などを再度ロードします。

したがって、HTMLを更新するだけの場合は、window.location = document.URLトラフィックが少なくて済みます。ただし、URLにハッシュ(#)がある場合、ページはリロードされません。


この動作は、少なくともChromeに当てはまります。location.reload()引数がない場合でも、キャッシュされたリソースの再検証を強制しますが、window.location = document.URLキャッシュされたリソースが新しい限り、サーバーにヒットすることなく提供されます。
Mark Amery

17

jQuery Load関数は、ページの更新も実行できます。

$('body').load('views/file.html', function () {
    $(this).fadeIn(5000);
});

4
いいえ、これはページの更新ではありません。
Mark Amery、

16

質問は一般的なものなので、答えの可能な解決策を要約してみましょう。

単純なプレーンJavaScriptソリューション

最も簡単な方法は、適切な方法で配置された1行のソリューションです。

location.reload();

彼らがいくつかの「ポイント」を得ることを望んでいるので、多くの人々がここで欠けているのは、reload()関数自体がブール値をパラメーターとして提供することです(詳細:https : //developer.mozilla.org/en-US/docs/Web / API / Location / reload)。

Location.reload()メソッドは、現在のURLからリソースをリロードします。オプションの一意のパラメータはブール値であり、これがtrueの場合、ページは常にサーバーから再ロードされます。falseであるか、指定されていない場合、ブラウザはキャッシュからページを再読み込みする場合があります。

つまり、2つの方法があります。

解決策1:サーバーから現在のページを強制的に再読み込みする

location.reload(true);

Solution2:キャッシュまたはサーバーからのリロード(ブラウザーと設定に基づく)

location.reload(false);
location.reload();

イベントをリッスンするjQueryと組み合わせたい場合は、「。click」や他のイベントラッパーの代わりに「.on()」メソッドを使用することをお勧めします。たとえば、より適切な解決策は次のとおりです。

$('#reloadIt').on('eventXyZ', function() {
    location.reload(true);
});

15

jQueryを使用してページを非同期に再読み込みするソリューションを次に示します。によるちらつきを防ぎwindow.location = window.locationます。この例は、ダッシュボードのように、継続的にリロードするページを示しています。これは、テスト済みで、タイムズスクエアの情報ディスプレイテレビで実行されています。

<!DOCTYPE html>
<html lang="en">
  <head>
    ...
    <meta http-equiv="refresh" content="300">
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
    <script>
    function refresh() {
      $.ajax({
        url: "",
        dataType: "text",
        success: function(html) {
          $('#fu').replaceWith($.parseHTML(html));
          setTimeout(refresh,2000);
        }
      });
    }
    refresh();
    </script>
  </head>
  <body>
    <div id="fu">
      ...
    </div>
  </body>
</html>

ノート:

  • 使用する$.ajaxように直接$.get('',function(data){$(document.body).html(data)}) キャッシュ逮捕取得する原因CSS / JSファイルは、使用しても、cache: true我々が使用する理由です、parseHTML
  • parseHTMLbodyタグが見つからないので、あなたの全身が余分なdivに入る必要があります。この知識のナゲットがいつかあなたを助けてくれることを願っています。div
  • http-equiv="refresh"javascript / server hiccupで何か問題が発生した場合に備えて使用します。その後、電話を受けることなくページがリロードされます。
  • このアプローチはおそらく何らかの方法でメモリをリークします、http-equivリフレッシュはそれを修正します

14

見つけた

window.location.href = "";

または

window.location.href = null;

また、ページを更新します。

これにより、ハッシュを削除してページをリロードすることが非常に簡単になります。これは、iOSシミュレーターでAngularJSを使用しているときにとても便利なので、アプリを再実行する必要はありません。


いいシュート、気づかなかった。
Junaid Atari

9

JavaScript location.reload() メソッドを使用できます 。このメソッドはブールパラメータを受け入れます。trueまたはfalse。パラメータが true; ページは常にサーバーから再読み込みされます。もしそうならfalse; これはデフォルトであるか、パラメーターブラウザーが空の場合、ページをキャッシュから再読み込みします。

trueパラメータ

<button type="button" onclick="location.reload(true);">Reload page</button>

default/ falseパラメータ

 <button type="button" onclick="location.reload();">Reload page</button>

jqueryの使用

<button id="Reloadpage">Reload page</button>
<script type="text/javascript">
    $('#Reloadpage').click(function() {
        location.reload();
    }); 
</script>

8

あなたは必要ありません使用してページをリロードし、jQueryのから何かを純粋なJavaScriptをちょうどこのような場所のプロパティにリロード機能を使用し、:

window.location.reload();

デフォルトでは、ブラウザのキャッシュ(存在する場合)を使用してページを再読み込みします...

ページを強制的に再読み込みしたい場合は、以下のようにtrue値をreloadメソッドに渡してください...

window.location.reload(true);

また、すでにwindowスコープにいる場合は、windowを削除して次のように実行できます。

location.reload();

8

使用する

location.reload();

または

window.location.reload();

OPは「jQueryを使用して」と具体的に述べています(すでに多くの人が指摘しているように、jQueryの質問でないはずです
RomainValeri

3

onclick="return location.reload();"buttonタグ内で使用します。

<button id="refersh-page" name="refersh-page" type="button" onclick="return location.reload();">Refesh Page</button>

3

jQueryを使用していて更新したい場合は、JavaScript関数にjQueryを追加してみてください。

をクリックしてiframeをページから非表示にしたいのh3ですが、動作しましたがiframe、ブラウザーを手動で更新しない限り、最初にを表示できるアイテムをクリックできませんでした。理想的ではありません。

私は以下を試しました:

var hide = () => {
    $("#frame").hide();//jQuery
    location.reload(true);//javascript
};

プレーンジェーンJavaScriptとjQueryを混在させることで機能するはずです。

// code where hide (where location.reload was used)function was integrated, below    
    iFrameInsert = () => {
        var file = `Fe1FVoW0Nt4`;
        $("#frame").html(`<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/${file}\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe><h3>Close Player</h3>`);
        $("h3").enter code hereclick(hide);
}

// View Player 
$("#id-to-be-clicked").click(iFrameInsert);

3

ここでの答えはすべて良いです。質問は、ページのリロードについて指定しているので、私は将来の読者のために何かを追加すると思った。

jQueryは、HTMLのクライアント側スクリプトを簡素化するように設計されたクロスプラットフォームの JavaScriptライブラリです。

ウィキペディア

だからあなたはの基礎を理解するでしょう 、または に基づいています 。だから純粋に行く シンプルなことに関しては、はるかに優れています。

しかし、必要な場合 解決策はこちらです。

$(location).attr('href', '');

2

現在のページをリロードする方法はたくさんありますが、どういうわけかこれらのアプローチを使用すると、ページが更新されているのを確認できますが、キャッシュ値が少ないわけではないので、その問題を克服するか、ハードリクエストを行いたい場合は、以下のコードを使用します。

    location.reload(true);
    //Here, it will make a hard request or reload the current page and clear the cache as well.


    location.reload(false); OR location.reload();
    //It can be reload the page with cache

2
<i id="refresh" class="fa fa-refresh" aria-hidden="true"></i>

<script>
$(document).on('click','#refresh',function(){
   location.reload(true);
});
</script>

これを示唆する答えはすでにいくつかあります。
ダーマン

サーバーからの更新も
すばらしい

1

簡単なJavaScriptソリューション:

 location = location; 

<button onClick="location = location;">Reload</button>



1

あなたはそれを2つの方法で書くことができます。1つ目は、単純な更新とも呼ばれる、ページを再ロードする標準的な方法です

location.reload(); //simple refresh

もう1つはハードリフレッシュと呼ばれます。ここでは、ブール式を渡してtrueに設定します。これにより、ページがリロードされて古いキャッシュが破棄され、コンテンツが最初から表示されます。

location.reload(true);//hard refresh

1
このサイトでは、コードのみの回答は一般に嫌われています。回答を編集して、コードのコメントや説明を含めていただけませんか?説明では、次のような質問に答える必要があります。どうやってやるの?どこに行くの?OPの問題をどのように解決しますか?参照:アンサーの方法。ありがとう!
Eduardo Baitello、



-1

jQueryを使用してページリロードするために使用できるコード行をいくつか次に示します。

jQueryラッパーを使用し、ネイティブのdom要素を抽出します。

コードでjQueryを使用したいだけで、コードの速度/パフォーマンスを気にしない場合は、これを使用してください。

ニーズに合った1〜10を選択するか、パターンと回答に基づいてさらに追加してください。

<script>
  $(location)[0].reload(); //1
  $(location).get(0).reload(); //2
  $(window)[0].location.reload(); //3
  $(window).get(0).location.reload(); //4
  $(window)[0].$(location)[0].reload(); //5
  $(window).get(0).$(location)[0].reload(); //6
  $(window)[0].$(location).get(0).reload(); //7
  $(window).get(0).$(location).get(0).reload(); //8
  $(location)[0].href = ''; //9
  $(location).get(0).href = ''; //10
  //... and many other more just follow the pattern.
</script>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.