[javascript] Come posso aggiornare una pagina con jQuery?



Answers

Questo dovrebbe funzionare su tutti i browser anche senza jQuery:

location.reload();
Question

Come posso aggiornare una pagina con jQuery?




Un sacco di modi funzionerà, suppongo:

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



Ecco una soluzione che ricarica in modo asincrono una pagina usando jQuery. Evita lo sfarfallio causato da window.location = window.location . Questo esempio mostra una pagina che si ricarica continuamente, come in una dashboard. È testato in battaglia e funziona su una TV con display informativo a Times Square.

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

Gli appunti:

  • Usando $.ajax direttamente come $.get('',function(data){$(document.body).html(data)}) fa sì che i file css / js vengano cancellati dalla cache , anche se si usa la cache: true , è per questo che usiamo parseHTML
  • parseHTML NON troverà un tag del body modo che tutto il tuo corpo abbia bisogno di andare in un div extra, spero che questa pepita di conoscenza ti aiuti un giorno, puoi indovinare come abbiamo scelto l'id per quel div
  • Usa http-equiv="refresh" nel caso in cui qualcosa vada storto con javascript / hiccup del server, quindi la pagina sarà ANCORA ricaricata senza che tu riceva una telefonata
  • Questo approccio probabilmente perde la memoria in qualche modo, l'aggiornamento http-equiv risolve il problema



window.location.reload() si ricaricherà dal server e caricherà nuovamente tutti i dati, script, immagini, ecc.

Quindi, se vuoi semplicemente aggiornare l'HTML, window.location = document.URL tornerà molto più veloce e con meno traffico. Ma non ricaricherà la pagina se c'è un hash (#) nell'URL.




Potresti volerlo usare

location.reload(forceGet)

forceGet è un booleano e facoltativo.

L'impostazione predefinita è false che ricarica la pagina dalla cache.

Impostare questo parametro su true se si desidera forzare il browser ad ottenere la pagina dal server per eliminare anche la cache.

O semplicemente

location.reload()

se vuoi veloce e facile con il caching.




Se la pagina corrente è stata caricata da una richiesta POST, è possibile che si desideri utilizzare

window.location = window.location.pathname;

invece di

window.location.reload();

perché window.location.reload() chiederà conferma se viene chiamato su una pagina che è stata caricata da una richiesta POST.




Funzione di ricarica

reload: function() {
    location.reload();
},

Ricarica l'evento click

$("a").click(function(){
    location.reload();
})



ho trovato

window.location.href = "";

o

window.location.href = null;

rende anche una pagina di aggiornamento.

Questo rende molto più facile ricaricare la pagina rimuovendo qualsiasi hash. Questo è molto bello quando utilizzo AngularJS nel simulatore iOS, in modo da non dover eseguire nuovamente l'app.




Related