You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新div后如何正确刷新页面?附点击链接更新内容的代码

How to Properly Refresh Page After Updating Div Content with History.js

Hey there! Let's work through how to fix the refresh issue you're facing with your AJAX content loading setup using jQuery and History.js. The core problem here is that right now, your content only updates when you click a sidebar link—but when the user refreshes the page or navigates directly to a stateful URL, your script doesn't trigger the content load. Here's how to fix it step by step:

1. Refactor Content Loading into a Reusable Function

First, pull your content loading logic out into a standalone function. This lets us call it from multiple places (link clicks, page refresh, history navigation) without repeating code:

function loadContent(targetUrl) {
  // Optional: Show a loading state to improve user experience
  $('#your-target-div').html('<div class="loading">Loading content...</div>');

  // Fetch the content via AJAX
  $.ajax({
    url: targetUrl,
    success: function(response) {
      // Update your div with the new content
      $('#your-target-div').html(response);
      
      // Optional: Update the page title to match the loaded content
      const newTitle = $(response).filter('title').text();
      if (newTitle) document.title = newTitle;
    },
    error: function() {
      // Handle load errors gracefully
      $('#your-target-div').html('<div class="error">Oops, failed to load content.</div>');
    }
  });
}

Modify your existing click handler to push the new state to History.js, then add listeners for history changes and initial page load:

$(function() {
  // Handle sidebar link clicks
  $('.sidebar a').click(function(e) {
    e.preventDefault();
    const linkUrl = $(this).attr('href');

    // Push the new URL to the browser history stack
    History.pushState(null, null, linkUrl);
    
    // Load the content for this URL
    loadContent(linkUrl);
  });

  // Listen for History State Changes (Refresh/Back/Forward)
  History.Adapter.bind(window, 'statechange', function() {
    const currentState = History.getState();
    // Load content matching the current URL state
    loadContent(currentState.url);
  });

  // Initialize Content on Page Load
  // Load the content for the initial URL when the page first loads
  loadContent(window.location.pathname + window.location.search);
});

Key Explanations

  • Reusable loadContent Function: This centralizes all your content loading logic, making it easy to maintain and reuse across different triggers.
  • History.pushState: This updates the browser's address bar with the new URL without reloading the page, ensuring that when the user refreshes, the correct URL is preserved.
  • statechange Event Listener: This catches when the user refreshes the page, clicks the back/forward button, or navigates directly to a stateful URL. It tells your script to load the content matching the current URL.
  • Initial Page Load: The final loadContent call ensures that even if someone visits your site directly with a specific URL (not just the homepage), the correct content loads immediately.

Quick Notes

  • If your AJAX responses are full HTML pages (not just the content snippet you need), adjust the success handler to extract the specific part you want. For example: $('#your-target-div').html($(response).find('#content-snippet').html());
  • Make sure your server is configured to return the correct content for the URLs you're pushing (especially if using clean URLs instead of hashes).

内容的提问来源于stack exchange,提问作者Marat Idrisov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:58:50