Питання Як я можу оновити сторінку за допомогою jQuery?


Як я можу оновити сторінку за допомогою jQuery?


2049
2018-03-23 11:55


походження


Оскільки jQuery є базою JavaScript для легкого маніпулювання DOM і пов'язання з подіями, я рекомендую вам попросити JavaScript, а не jQuery. - WoIIe
Для цього вам не потрібна jQuery. - Stardust
Більш актуальні, ніж коли-небудь: needsmorejquery.com - K_7


Відповіді:


Використовуйте location.reload():

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

The reload() Функція приймає необов'язковий параметр, який може бути встановлений на true щоб змусити перезавантажити з сервера, а не кеш-пам'яті. Параметр за замовчуванням до false, тому за замовчуванням сторінка може перезавантажуватись з кеша браузера.


3321
2018-03-23 11:57



Це не спрацювало для мене. Це працювало: window.location.href = window.location.href; - Yster
Це не спрацювало для мене. window.location.href=window.location.href; і location.href=location.href; працював - Travis
window.location.reload(true); буде важко оновити, інакше за замовчуванням це буде хибним - Sagar Naliyapara
Це працює, але на нього є невелика затримка - mindmyweb
@ Сагар Н, це працює і для мене. Дякую. Я жорстко пробував останні кілька днів з різним підходом, але ваше рішення врятувало мене. - Ludus H


Це має працювати у всіх браузерах, навіть без jQuery:

location.reload();

410
2018-03-23 11:57





Існує багаторазовий необмежені можливості оновлення сторінки з 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>


345
2018-06-23 09:47



+1 для списку і jsfiddle. У мене є питання: у jsfiddle 1 і 6 роблять сформовану сторінку зникати на мить, коли вона перезавантажується, а 2-5 робить перезавантаження сторінки "непомітною". У інструменті dev в chrome я бачу сторінку, яка відновлюється, але чи могли б ви пояснити, що процес перетворення є дефферентним? будь ласка Спасибі заздалегідь. - Cԃաԃ
@ Cԃ ա ԃ Я не бачу різниці ... Можливо, кеш це проблема? Я скоро погляжу. - Ionică Bizău
1 і 6 (reload()/(false)) повільніше хммм цікаво. :) і 1 і 6 такі ж, як і reload()параметр за замовчуванням: false. - Cԃաԃ
location.href = location.href це те, що я зазвичай користуюся, але дякую за інших. Дуже корисний! +1 - Amal Murali
@ Cԃ ա ԃ Нарешті я можу відтворити те, що ви бачите, і я запитав тут. - Ionică Bizău


Думаю, працюватиме багато способів:

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

183
2018-03-23 11:58



Це window.location.href=window.location.href; зроблю нічого якщо у вашій URL-адресі в кінці є # / хешбанг example.com/something#blah: - AaronLS
У випадку, якщо хтось цікавить, яка різниця між ними location.reload() і history.go(0) це: немає нікого. Відповідний розділ специфікації HTML 5 в w3.org/TR/html5/browsers.html#dom-history-go явно вказує на те, що вони еквівалентні: "Коли go(delta) метод викликається, якщо аргумент методу був опущений або має значення нуль, користувацький агент повинен діяти так, ніби location.reload() Замість цього був викликаний метод ". - Mark Amery
Єдиним, що працював для мене, був цей: window.location.href = window.location.href; - Yster


Щоб перезавантажити сторінку за допомогою jQuery, виконайте такі дії:

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

Підхід, який я використовував, був Ajax jQuery. Я протестував це Chrome 13. Тоді я поклав код в обробнику, який запускає перезавантаження. The URL-адреса є "", що означає ця сторінка.


114
2017-09-30 11:00



Зменшення кількості голосів Це насправді не відповідає на запитання, а натомість показує, як замінити HTML-сторінку сторінки на відповідь Ajax. Це відрізняється від перезавантаження сторінки: наприклад, я працюю з ситуацією прямо зараз, де це не допомогло б вирішити первісну проблему. - Marnen Laibow-Koser
Одна проблема з перезавантаженням усього HTML, як це, полягає в тому, що потрібно вручну викликати події onload / ready і пом'якшити перезапис раніше оголошених змінних, стан яких ви можете зберегти після оновлення. - PassKit
Якщо ви не дуже обережні з цим кодом воля призводить до витоку пам'яті, де ви додаєте обробників подій і такі, не від'єднуючи їх, перш ніж замінити код, до якого вони приєднані. - Daniel Llewellyn
Я використовую це для перезавантаження нашої інформаційної панелі кожну секунду, нульове мерехтіння! Це комета бідної людини / Джонсон Апі. Завдяки @DanielLlewellyn та співавт. для попереджень - William Entriken
Кілька людей прокоментували, що цей підхід корисний для оновлення лише частини сторінки. Це не так. Я думаю, ці люди не розуміють context параметр $.ajax і сподіваюся, що це якимось чином виконає якусь магію. Все це є встановити this значення функцій зворотного виклику. Ajax на URL-адресу "" натискає URL, на якому ви зараз перебуваєте, тим самим звичайно завантажуючи повний HTML (включаючи <html> і <head> і <body>), і ніщо в цьому відповіді не відфільтровує матеріал, який ви не бажаєте. - Mark Amery


Якщо поточна сторінка була завантажена за допомогою запиту POST, ви можете використати її

window.location = window.location.pathname;

замість

window.location.reload();

оскільки window.location.reload() запит на підтвердження, якщо він буде викликаний на сторінку, завантаженої запитом POST.


97
2018-06-22 11:58



Проте буде втрачено строка запиту, тоді як window.location = window.location не буде - mrmillsy
@mrmillsy window.location = window.location також недосконалий; він не робить нічого, якщо в поточній URL-адресі є fragid (хешбанг). - Mark Amery


Питання повинно бути

Як оновити сторінку з JavaScript

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

Ви зіпсовані на вибір.


55
2018-03-23 12:01