Soru Bir sayfayı jQuery ile nasıl yenileyebilirim?


Bir sayfayı jQuery ile nasıl yenileyebilirim?


2049
2018-03-23 11:55


Menşei


JQuery, kolay DOM manipülasyonu ve olay bağlama için bir javascript çerçevesi olduğundan jQuery yerine javascript'i istemenizi öneririm. - WoIIe
Bunun için jQuery'ye ihtiyacınız yok. - Stardust
Her zamankinden daha alakalı: needsmorejquery.com - K_7


Cevaplar:


kullanım location.reload():

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

reload() işlevi, ayarlanabilen isteğe bağlı bir parametre alır true önbellekten ziyade sunucudan yeniden yüklemeyi zorlamak için. Parametre varsayılan falseBu nedenle, sayfa varsayılan olarak tarayıcının önbelleğinden yeniden yüklenebilir.


3321
2018-03-23 11:57



Bu benim için çalışmadı. Bu çalıştı: window.location.href = window.location.href; - Yster
Bu benim için çalışmadı. window.location.href=window.location.href; ve location.href=location.href; çalıştı. - Travis
window.location.reload(true); sert yenilenir, aksi takdirde varsayılan olarak yanlıştır - Sagar Naliyapara
Bu çalışıyor ama üzerinde küçük bir gecikme var - mindmyweb
@Sagar N, bu benim için de çalışıyor. Teşekkür ederim. Son birkaç gündür farklı bir yaklaşımla denedim ama çözümün beni kurtardı. - Ludus H


Bu jQuery olmadan bile tüm tarayıcılarda çalışmalıdır:

location.reload();

410
2018-03-23 11:57





Var çoklu JavaScript ile bir sayfayı yenilemek için sınırsız yollar:

  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) 

    Dokümanı çekmemiz gerekirse    Web sunucusu tekrar (belgenin bulunduğu yer gibi)    dinamik olarak değiştir) argümanı true.

Yaratıcı olan listeye devam edebilirsiniz:

  • window.location = window.location
  • window.self.window.self.window.window.location = window.location
  • ... ve diğer 534 yol

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>


345
2018-06-23 09:47



Liste ve jsfiddle için +1. Jsfiddle 1 ve 6'da, oluşturulan sayfanın yeniden yüklenirken bir an için kaybolacağını ve 2-5 sayfanın yeniden yüklenemediğini "farkedilemez" hale getirdiğine dair bir sorum var. Kromdaki dev aracında, sayfayı yeniden üretildiğini görebilirim, ancak yeniden çizme sürecini defferent olarak açıklayabilir misiniz? Lütfen. Şimdiden teşekkür ederim. - Cԃաԃ
@ Cԃ ա ԃ Farkı görmüyorum ... Belki önbellek sorun mu? Yakında bir göz atacağım. - Ionică Bizău
1 ve 6 (reload()/(false)) yavaşlar. hmmm. ilginç. :) ve 1 ve 6 aynıdır reload()varsayılan parametre false. - Cԃաԃ
location.href = location.href Genelde kullandığım şey, ama diğerleri için teşekkürler. Çok kullanışlı! +1 - Amal Murali
@ Cԃ ա ԃ Sonunda gördüğün şeyi yeniden üretebilirim ve ben istedim İşte. - Ionică Bizău


Birçok yol çalışacaktır, sanırım:

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

183
2018-03-23 11:58



Bu window.location.href=window.location.href; yapacağım hiçbir şey değil URL’nizin sonunda # / hashbang varsa example.com/something#blah: - AaronLS
Birinin aradaki farkın ne olduğunu merak etmesi durumunda location.reload() ve history.go(0) : Yoktur. HTML 5 spesifikasyonunun ilgili bölümü w3.org/TR/html5/browsers.html#dom-history-goaçıkça eşdeğer olduklarını belirtir: "Ne zaman go(delta) Metot metodu ihmal edildiğinde veya sıfır değerine sahipse, kullanıcı aracısı location.reload() Bunun yerine yöntem çağrıldı. " - Mark Amery
Benim için çalışan tek kişi şuydu: window.location.href = window.location.href; - Yster


Bir sayfayı jQuery ile yeniden yüklemek için şunu yapın:

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

Burada kullandığım yaklaşım Ajax jQuery idi. Test ettim Krom 13. Ardından kodu yeniden yüklemeyi tetikleyen işleyiciye koydum. URL olduğu "", demek ki bu sayfa.


114
2017-09-30 11:00



Downvoting. Bu, soruyu gerçekten yanıtlamaz, bunun yerine sayfanın HTML'sinin Ajax yanıtıyla nasıl değiştirileceğini gösterir. Bu, sayfayı yeniden yüklemekten farklıdır: örneğin, orijinal sorunu çözmek için işe yaramayacağı bir durumla çalışıyorum. - Marnen Laibow-Koser
HTML'nin tamamını yeniden yüklemeyle ilgili bir sorun, yükleme / hazır olayları manuel olarak çağırmak ve durumu, yenilendikten sonra saklamak isteyebileceğiniz önceden bildirilmiş değişkenlerin üzerine yazılmasını azaltmak zorunda kalmasıdır. - PassKit
Kodunuza çok dikkat etmedikçe irade Olay işleyicileri eklediğiniz ve bunların eklendikleri kodu değiştirmeden önce bunları ayırmadan, bellek sızıntılarına neden olabilirsiniz. - Daniel Llewellyn
Her saniye, sıfır titreşim kontrol panelimizi yeniden yüklemek için kullanıyorum! Zavallı adamın kuyruklu yıldızı / json api'si. @DanielLlewellyn ve ark. uyarılar için. - William Entriken
Birkaç kişi, bu yaklaşımın sayfanın sadece bir bölümünü yenilemek için faydalı olduğunu belirtti. Öyle değil. Bence bu insanlar yanlış anlaşılıyor. context parametresi $.ajax ve bir şekilde bir çeşit sihir yapmasını bekliyordum. Tek yaptığı yı kur this geri çağırma fonksiyonlarının değeri. Ajax URL'sine "" Şu an bulunduğunuz URL’ye ulaşacak ve bu sayede normal olarak HTML’yi ( <html> ve <head> ve <body>) ve bu cevapta hiçbir şey istemediğiniz şeyleri filtreler. - Mark Amery


Mevcut sayfa bir POST isteğiyle yüklendiyse, kullanmak isteyebilirsiniz

window.location = window.location.pathname;

yerine

window.location.reload();

Çünkü window.location.reload() POST isteğiyle yüklenen bir sayfada çağrılırsa onay ister.


97
2018-06-22 11:58



Ancak bu, querystring'i kaybedecek, window.location = window.location ise - mrmillsy
@mrmillsy window.location = window.location Bununla birlikte, aynı zamanda kusurludur; Mevcut URL'de bir fragid (hashbang) varsa hiçbir şey yapmaz. - Mark Amery


Soru olmalı,

Bir sayfayı nasıl yenileyebilirsiniz? JavaScript

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

Seçim için şımarıksın.


55
2018-03-23 12:01





Kullanmak isteyebilirsiniz

location.reload(forceGet)

forceGet bir boole ve isteğe bağlıdır.

Sayfayı önbellekten yeniden yükleyen varsayılan değer yanlıştır.

Tarayıcıdan sayfayı önbellekten kurtulmak için sayfayı zorlamak istiyorsanız, bu parametreyi true olarak ayarlayın.

Ya da sadece

location.reload()

Önbelleğe alma ile hızlı ve kolay isterseniz.


48
2017-07-25 14:27



Bunun için MDN: developer.mozilla.org/en-US/docs/Web/API/Location/reload - Max Heiber


Farklı önbellekle ilgili davranışlara sahip üç yaklaşım:

  • location.reload(true)

    Uygulayan tarayıcılarda forcedReload parametresi location.reload()sayfanın yeni bir kopyasını ve tüm kaynaklarını (komut dosyaları, stil sayfaları, resimler vb.) alarak yeniden yükler. Hizmet olmaz herhangi önbellekten kaynaklar - sunucudan yeni kopyalar göndermeden if-modified-since veya if-none-match istekte üstbilgiler.

    Kullanıcılara, mümkün olduğu yerlerde tarayıcılarda "sabit bir yeniden yükleme" yapmakla eşdeğerdir.

    Geçerken unutmayın true için location.reload() Firefox'ta desteklenir (bkz. MDN) ve Internet Explorer (bkz. MSDN) ancak evrensel olarak desteklenmez ve bir parçası değildir W3 HTML 5 özelliklerine de W3 taslak HTML 5.1 teknik özelliklerine de WHATWG HTML Yaşam Standardı.

    Google Chrome gibi desteklenmeyen tarayıcılarda, location.reload(true) aynı davranır location.reload().

  • location.reload() veya location.reload(false)

    Sayfayı yeniden yükler, sayfanın HTML'sinin önbelleğe alınmış, yeni bir kopyasını alır ve gerçekleştirir RFC 7234 tarayıcının önbelleğe aldığı tüm kaynaklar (komut dosyaları gibi) için tekrar doğrulama istekleri, onlar olsa bile taze RFC 7234, tarayıcının yeniden onaylama olmadan onlara hizmet etmesine izin verir.

    Tam olarak tarayıcı, bir location.reload()arama, söyleyebildiğim kadar belirtilmemiş ya da belgelenmemiş; Yukarıdaki davranışları deneyerek belirledim.

    Bu, kullanıcının tarayıcılarındaki "yenileme" düğmesine basmasıyla eşdeğerdir.

  • location = location (ya da location veya özelliklerine göre)

    Yalnızca sayfanın URL'si fragid / hashbang içermiyorsa çalışır!

    Sayfayı yeniden göndermeden veya revalidating olmadan yeniden yükler herhangi  taze önbellekten kaynaklar. Sayfanın HTML'si yeniyse, bu sayfa hiçbir HTTP isteğinde bulunmadan sayfayı yeniden yükler.

    Bu, sayfayı (önbelleğe alma açısından) yeni bir sekmede sayfayı açan kullanıcıya eşdeğerdir.

    Ancak, sayfanın URL'sinde bir karma varsa, bunun bir etkisi olmaz.

    Yine, burada önbelleğe alma davranışı bildiğim kadarıyla belirtilmemiş; Test ederek belirledim.

Yani, özet olarak, kullanmak istersiniz:

  • location = location önbellek maksimum kullanım için, olduğu sürece sayfanın URL'sinde karma yok, bu durumda işe yaramadı
  • location.reload(true) Revize edilmeksizin tüm kaynakların yeni kopyalarını almak (her ne kadar evrensel olarak desteklenmese de farklı bir şekilde davranmayacaksa) location.reload() Chrome gibi bazı tarayıcılarda)
  • location.reload() 'refresh' düğmesine tıklayarak kullanıcının etkisini sadakatle yeniden üretmek.

28
2017-11-14 11:22



Konum = konum için +1; Pek çok kişi, verilen cevapların çoğundan daha kısa olmasına rağmen bunu önermek gibi görünmüyor, tek dezavantajı tahmin edilebilirliktir, oysa location.reload () biraz daha semantiktir - Brandito
@Brandito Daha da önemlisi, location = location URL'de bir karma varsa çalışmaz. Fragmanı kullanan herhangi bir site için - veya hatta bir sayfaya bağlantı veren bir kullanıcının URL’ye makul bir şekilde ekleyebileceği herhangi bir site için - bu, onu kırıyor. - Mark Amery