jQuery로 페이지를 새로 고치는 방법은 무엇입니까?


2452

jQuery로 페이지를 새로 고치는 방법은 무엇입니까?


29
jQuery는 쉬운 DOM 조작 및 이벤트 바인딩을위한 자바 스크립트 프레임 워크이므로 jQuery 대신 자바 스크립트를 요청하는 것이 좋습니다.
WoIIe

19
이를 위해 jQuery가 필요하지 않습니다.
스타 더스트

13
그 어느 때보 다 관련성 : needsmorejquery.com
Kartik Chugh

@Stardust jQuery를 수행 할 수 있다면 JavaScript로 가능한 모든 기능 때문에 jQuery로 수행하는 작업에는 jQuery가 필요하지 않습니다.
나는 가장 멍청한 사람이다

답변:


3827

사용 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;했다.
twharmon

23
window.location.reload(true);하드 새로 고침, 그렇지 않으면 기본적으로 거짓입니다
Sagar Naliyapara

@ Sagar N, 이것은 나에게도 효과적입니다. 감사합니다. 지난 몇 일 동안 다른 접근법으로 열심히 노력했지만 솔루션이 저를 구했습니다.
Ludus H

그냥 뛰어 window.location.reload()!

457

이것은 jQuery가 없어도 모든 브라우저에서 작동합니다.

location.reload();

449

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)

    웹 서버에서 문서를 다시 가져와야하는 경우 (예 : 문서 내용이 동적으로 변경되는 위치) 인수를로 전달합니다 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 jsfiddle 1과 6에서 생성 된 페이지가 다시로드 될 때 잠시 사라지고 2-5가 페이지 다시로드를 "알 수 없음"으로 만듭니다. 크롬의 개발 도구에서 페이지가 재생성되는 것을 볼 수 있지만 다시 그리기 프로세스가 다른 것을 설명 할 수 있습니까? 부디. 미리 감사드립니다.
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
이것은 window.location.href=window.location.href;수행하지 않습니다 아무것도 당신의 URL은 끝에 # / hashbang가있는 경우 example.com/something#blah:
AaronLS

18
누구 location.reload()와 의 차이점이 궁금한 경우 history.go(0): 없음. w3.org/TR/html5/browsers.html#dom-history-go 에있는 HTML 5 스펙의 관련 섹션은 다음과 같이 명시 적으로 명시되어 있습니다. " go(delta)메소드에 대한 인수가 생략되었거나 값이 0 인 경우 사용자 에이전트는 location.reload()메소드가 대신 호출 된 것처럼 작동해야합니다 . "
Mark Amery

나를 위해 일한 유일한 사람은 이것이었다 : 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

5
이와 같이 전체 HTML을 다시로드하는 데 한 가지 문제는 수동으로 onload / ready 이벤트를 호출하고 새로 고친 후 상태를 유지하려는 이전에 선언 된 변수의 덮어 쓰기를 완화해야한다는 것입니다.
PassKit

3
당신은 당신의 코드를 매우주의가 아니라면이 됩니다 당신은 그들이에 붙어있는 코드를 교체하기 전에를 분리하지 않고 이벤트 핸들러 등을 첨부했습니다 메모리 누수로 이어집니다.
Daniel Llewellyn

나는 이것을 사용하여 매 초마다 대시 보드를 다시로드하고 깜박임이 없습니다! 가난한 사람의 혜성 / JSON API입니다. @DanielLlewellyn et al. 덕분에. 경고합니다.
William Entriken

3
몇몇 사람들은이 방법이 페이지의 일부만 새로 고치는 데 유용하다고 언급했습니다. 그렇지 않습니다. 나는 그 사람들이 context매개 변수를 잘못 이해하고 $.ajax어떤 식 으로든 어떤 마법을 수행하기를 기대하고 있다고 생각합니다 . 모든 그것입니다 않는 설정된 this콜백 함수의 값을 . 의 URL에 대한 Ajax ""는 현재 사용중인 URL을 공격하여 일반적으로 전체 HTML ( <html><head>and 포함)을로드 하며이 <body>답변에서 원하지 않는 것을 필터링하지 않습니다.
Mark Amery

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에 fragid (hashbang)가 있으면 아무 것도 수행하지 않습니다.
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

캐시 관련 동작이 다른 세 가지 접근 방식 :

  • location.reload(true)

    forcedReload매개 변수 를 구현하는 브라우저 location.reload()에서 페이지의 모든 사본 및 모든 해당 자원 (스크립트, 스타일 시트, 이미지 등)을 가져 와서 다시로드합니다. 제공하지 않습니다 어떤 캐시에서 자원을 - 어떤 보내지 않고 서버에서 신선한 복사본을 얻을 수 if-modified-since또는 if-none-match요청에 헤더를.

    가능한 경우 브라우저에서 "하드 리로드"를 수행하는 사용자와 동일합니다.

    참고 그 전달 truelocation.reload()파이어 폭스 (참조 지원됩니다 MDN을 ) 및 Internet Explorer (참조 MSDN을 )하지만 보편적으로 지원의 일부가 아닙니다하지 W3 HTML 5 스펙 ,도 W3 초안 HTML 5.1 사양 ,도 WHATWG HTML 생활 표준 .

    Chrome과 같은 지원되지 않는 브라우저 location.reload(true)에서는와 동일하게 작동합니다 location.reload().

  • location.reload() 또는 location.reload(false)

    다시로드 페이지, 신선한를 가져 오는, 페이지 HTML 자체 및 수행 이외의 캐시 된 복사본 RFC 7234 , 브라우저 캐시 것을 (스크립트 같은) 어떤 리소스에 대한 재 검증 요청을 들은 경우에도 신선한은 RFC 7234 개 허용 봉사 할 수있는 브라우저입니다 재확인없이

    location.reload()전화를 할 때 브라우저가 캐시를 어떻게 활용해야하는지 정확히 알 수있는 한 구체적으로 명시하거나 문서화하지 않았습니다. 실험을 통해 위의 동작을 확인했습니다.

    이는 사용자가 브라우저에서 "새로 고침"버튼을 누르는 것과 동일합니다.

  • location = location (또는 location 속성에 하거나 속성에 )

    페이지의 URL에 fragid / hashbang이없는 경우에만 작동합니다!

    refetching 또는 재 검증없이 다시로드 페이지를 어떤 새로운 캐시에서 자원을. 페이지의 HTML 자체가 최신이면 HTTP 요청을 전혀 수행하지 않고 페이지를 다시로드합니다.

    이는 캐싱 관점에서 새 탭에서 페이지를 여는 사용자와 동일합니다.

    그러나 페이지의 URL에 해시가 포함되어 있으면 아무 효과가 없습니다.

    여기서도 캐싱 동작은 내가 아는 한 지정되지 않았습니다. 테스트를 통해 결정했습니다.

요약하면 다음을 사용하려고합니다.

  • location = location캐시의 최대 사용, 오래로 페이지 경우이 작동하지 않습니다, 그 URL에 해시가없는
  • location.reload(true)재확인하지 않고 모든 리소스의 새 사본을 가져옵니다 (일반적으로 지원되지 않으며 location.reload()Chrome과 같은 일부 브라우저에서는 다르게 작동하지 않음 )
  • location.reload() '새로 고침'버튼을 클릭하는 사용자의 효과를 충실히 재현합니다.

위치 = 위치에 +1; 비록 대부분의 사람들이 제공하는 답변보다 짧지 만 제안하는 것 같지는 않지만 유일한 단점은 내가 추측 할 수있는 반면, location.reload ()는 좀 더 의미가 있습니다.
Brandito

@Brandito 더 중요한 것은 location = locationURL에 해시가 있으면 작동하지 않습니다. fragids를 사용하는 모든 사이트 또는 누군가가 페이지에 링크하는 것이 fragid를 URL에 추가 할 수있는 사이트의 경우 사이트를 손상시킵니다.
Mark Amery

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 3:20의

16

질문이 일반적이므로 답변에 대한 가능한 해결책을 요약 해 보겠습니다.

간단한 일반 JavaScript 솔루션 :

가장 쉬운 방법은 적절한 방법으로 배치 된 한 줄 솔루션입니다.

location.reload();

많은 사람들이 "포인트"를 얻기를 원하기 때문에 여기에서 누락 된 것은 reload () 함수 자체가 부울을 매개 변수로 제공한다는 것입니다 (자세한 내용 : https://developer.mozilla.org/en-US/docs/Web / API / Location / reload ).

Location.reload () 메서드는 현재 URL에서 리소스를 다시로드합니다. 선택적 고유 매개 변수는 부울이며, 참이면 페이지가 항상 서버에서 다시로드됩니다. false이거나 지정하지 않으면 브라우저가 캐시에서 페이지를 다시로드 할 수 있습니다.

이것은 두 가지 방법이 있음을 의미합니다.

해결 방법 1 : 서버에서 현재 페이지를 강제로 다시로드

location.reload(true);

해결 방법 2 : 캐시 또는 서버에서 다시로드 (브라우저 및 구성 기반)

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

그리고 이벤트를 수신하는 jQuery와 결합하려면 ".click"또는 다른 이벤트 래퍼 대신 ".on ()"메서드를 사용하는 것이 좋습니다. 예를 들어보다 적절한 해결책은 다음과 같습니다.

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

15

다음은 jQuery를 사용하여 페이지를 비동기 적으로 다시로드하는 솔루션입니다. 로 인한 깜박임을 방지합니다 window.location = window.location. 이 예는 대시 보드에서와 같이 지속적으로 다시로드되는 페이지를 보여줍니다. 전투 테스트를 거쳤으며 타임 스퀘어의 정보 디스플레이 TV에서 실행 중입니다.

<!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로 이동해야합니다.이 지식 덩어리가 언젠가 도움이되기를 바랍니다. 어떻게 ID를 선택했는지 추측 할 수 있습니다.div
  • http-equiv="refresh"자바 스크립트 / 서버 딸꾹질에 문제가있는 경우에만 사용 하면 전화를받지 않고도 페이지가 계속 다시로드됩니다.
  • 이 접근법은 아마도 어떻게 든 메모리를 유출 http-equiv합니다.

14

나는 찾았다

window.location.href = "";

또는

window.location.href = null;

또한 페이지를 새로 고칩니다.

이렇게하면 해시를 제거하여 페이지를 훨씬 쉽게 다시로드 할 수 있습니다. iOS 시뮬레이터에서 AngularJS를 사용할 때 매우 유용하므로 앱을 다시 실행할 필요가 없습니다.


좋은 촬영, 나는 그것을 몰랐다.
나이드 아타리

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를에서 아무것도 순수 자바 스크립트를 그냥이 같은 위치 속성에 다시로드 기능을 사용합니다 :

window.location.reload();

기본적으로 브라우저 캐시를 사용하여 페이지를 다시로드합니다 (존재하는 경우) ...

페이지를 강제로 다시로드하려면 아래처럼 실제 값을 전달하여 메소드를 다시로드하십시오 ...

window.location.reload(true);

또한 이미 창 범위 에 있다면 창을 제거하고 다음을 수행 할 수 있습니다.

location.reload();

8

사용하다

location.reload();

또는

window.location.reload();

OP는 특별히 "jQuery와 함께"언급했습니다 (많은 사람들이 이미 언급 했더라도 jQuery 질문 아닐 수도 있음)
RomainValeri

3

onclick="return location.reload();"버튼 태그 내에서 사용하십시오 .

<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
};

일반 Jane 자바 스크립트와 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>

이것을 제안하는 답변은 이미 거의 없습니다.
Dharman

서버에서 업데이트
Alemoh Rapheal Baja

1

간단한 자바 스크립트 솔루션 :

 location = location; 

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



1

두 가지 방법으로 쓸 수 있습니다. 첫 번째는 단순 새로 고침 이라고도하는 페이지를 다시로드하는 표준 방법입니다.

location.reload(); //simple refresh

또 다른 하나는 하드 새로 고침 이라고합니다 . 여기서 부울 표현식을 전달하고 true로 설정하십시오. 그러면 페이지가 새로 고침되어 이전 캐시가 손상되고 내용이 처음부터 표시됩니다.

location.reload(true);//hard refresh

1
코드 전용 답변은 일반적으로이 사이트에서 눈살을 찌푸립니다. 코드에 대한 주석이나 설명을 포함하도록 답변을 편집 해 주시겠습니까? 설명은 다음과 같은 질문에 답변해야합니다. 어떻게합니까? 어디로 갑니까? OP의 문제를 어떻게 해결합니까? 다음을 참조하십시오 : anwser . 감사!
Eduardo Baitello 1


0
$(document).on("click", "#refresh_btn", function(event) 
{
     window.location.replace(window.location.href);
});

-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.