jQuery+ajax實現局部刷新

来源:http://www.cnblogs.com/zlts/archive/2017/06/08/6960074.html
-Advertisement-
Play Games

在項目中,經常會用到ajax,比如實現局部刷新,比如需要前後端交互等,這裡呢分享局部刷新的兩種方法,主要用的是ajax裡面的.load()。 第一種: 當某幾個頁面都有相同的頭部、導航、底部的時候,點擊導航鏈接可以在幾個頁面中切換,此時想要的效果是點擊鏈接後只切換內容部分,其他不再重新載入。上代碼。 ...


在項目中,經常會用到ajax,比如實現局部刷新,比如需要前後端交互等,這裡呢分享局部刷新的兩種方法,主要用的是ajax裡面的.load()。

第一種:

當某幾個頁面都有相同的頭部、導航、底部的時候,點擊導航鏈接可以在幾個頁面中切換,此時想要的效果是點擊鏈接後只切換內容部分,其他不再重新載入。上代碼。

jq-load.html:

 1 <!DOCTYPE html>
 2 <html>
 3   <head>
 4     <title>ajax局部刷新</title>
 5   </head>
 6   <body>
 7 
 8     <header>
 9       <nav>
10         <a href="jq-load.html" class="current">首頁</a>
11         <a href="jq-load2.html">新聞資訊</a>
12         <a href="jq-load3.html">用戶中心</a>
13       </nav>
14     </header>
15 
16     <section id="content">
17       <div id="container">
18           首頁的內容
19       </div>
20     </section>
21 
22     <script src="js/jquery-1.11.0.min.js"></script>
23     <script src="js/jq-load.js"></script>
24 
25   </body>
26 </html>

註:jq-load2.html、jq-load3.html與jq-load.html代碼基本一致,只在#container的div里展示的內容不一樣。

jq-load.js:

 1 $('nav a').on('click', function(e) {                 
 2   e.preventDefault();  // 阻止鏈接跳轉
 3   var url = this.href;  // 保存點擊的地址
 4 
 5   $('nav a.current').removeClass('current');    
 6   $(this).addClass('current');                       
 7 
 8   $('#container').remove();                          
 9   $('#content').load(url + ' #container').fadeIn('slow'); // 載入新內容,url地址與該地址下的選擇器之間要有空格,表示該url下的#container
10 });

註:此種方法用到了一些html5裡面的新標記,在js中創建它們不再贅述。

第二種:

如果網頁的左側有一個列表,點擊列表使右側的內容進行切換,如果右側的內容過多,不適合做選項卡,這時候用.load()局部刷新最好不過了。上代碼。

user.html:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3     <head>
 4         <title>個人中心</title>
 5         <meta charset="utf-8">
 6         <script src="js/jquery-1.11.0.min.js"></script>
 7         <script src="js/user.js"></script>
 8     </head>
 9     <body>
10 
11         <div class="userWrap">
17             <ul class="userMenu">
18                 <li class="current" data-id="center">用戶中心</li>
19                 <li data-id="account">賬戶信息</li>
20                 <li data-id="trade">交易記錄</li>
21                 <li data-id="info">消息中心</li>
22             </ul>
23             <div id="content"></div>
25         </div>
26         
27     </body>
28 </html>

user.js:

$(function(){
    $(".userMenu").on("click", "li", function(){
        var sId = $(this).data("id");  //獲取data-id的值
        window.location.hash = sId;  //設置錨點
        loadInner(sId);
    });
    function loadInner(sId){
        var sId = window.location.hash;
        var pathn, i;
        switch(sId){
            case "#center": pathn = "user_center.html"; i = 0; break;
       case "#account": pathn = "user_account.html"; i = 1; break; case "#trade": pathn = "user_trade.html"; i = 2; break; case "#info": pathn = "user_info.html"; i = 3; break;
       default: pathn = "user_center.html"; i = 0; break; } $("#content").load(pathn); //載入相對應的內容 $(".userMenu li").eq(i).addClass("current").siblings().removeClass("current"); //當前列表高亮 } var sId = window.location.hash; loadInner(sId); });

user_center.html:

<div>
    用戶中心
    ……
</div>

註:其他user_xxx.html的頁面也是列表相對應的內容,此處不再贅述。

總結:

以上兩種方法原理是一樣的,通過.load()重新載入頁面中的某一部分,需註意,ajax需要在伺服器環境下運行。通過對比,可發現第一種比較簡單,第二種稍複雜些,不過個人推薦第二種,第一種主要是舉個例子,看.load()是怎麼來用的,其實它在用戶體驗方面稍遜一籌,比如點擊的時候地址欄里地址不變,使前進、後退失效,這個可以到後面再實現。而第二種的話運用比較靈活,巧妙的藉助data-*的自定義屬性來存儲數據,點擊的時候修改錨點,因為地址有變,所以刷新的時候仍然會保持當前的頁面內容而不是切換到第一個。

 

如果有什麼問題,還請園子里的朋友多多指教。多謝。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 程式想要通過簡單地設置一些參數就生成一個不同的軟體,在不同的情況下可能只用到一部分代碼,就沒必要把所有的代碼都寫進去,就可以用條件編譯,通過預編譯指令設置編譯條件,在不同的需要時編譯不同的代碼。 (一)條件編譯方法 條件編譯是通過預編譯指令來實現的,主要方法有:1、#if, #elif, #else ...
  • 1、document.domain+iframe的設置2、動態創建script3、利用iframe和location.hash4、window.name實現的跨域數據傳輸5、使用HTML5 postMessage6、利用flash 7、jsonp 本地的話,可以利用花瓶、gulp等工具 ...
  • 總結: toggle對整個元素的可見樣式屬性進行動畫過渡處理 slideToggle對元素做高與透明度過渡處理 fadeToggle對元素僅做透明度過渡處理 ...
  • 文章轉載:http://www.jianshu.com/p/8f74cfb146f7 網站是畢業設計的作品,開發這個網站的目的主要用於記錄一些筆記,以及聚合一些資訊信息,也算自己在網路世界中的一塊靜地吧,可以在這裡一些技術上想法的實踐。 網站最初前端使用vue開發,在前段時間由於項目的開發進度已經不 ...
  • 要撮利用js獲取url中參數名也參數值這個不多見了,但我今天需要這樣操作,下麵我來給大家介紹一下具體的實例方法。 在已知參數名的情況下,獲取參數值,使用正則表達式能很容易做到。 js的實現方法如下: function getValue(url, name) { var reg = new RegEx ...
  • [1]網頁源碼 [2]篩選數據 [3]cheerio [4]爬蟲代碼 [5] ...
  • jQuery類中添加多個屬性 jQuer為元素添加類 HTML code 可以看到jQuery類中添加多個屬性渲染效果是以內嵌樣式出現的。 而jQuer為元素添加的類沒有內嵌樣式的優先順序高 可以看到渲染效果中沒有funny的 background color: gray ; 和 color: yel ...
  • code 渲染效果 最初以為更改元素中class類裡面的類名順序,渲染效果就會根據類名順序依次渲染 code 渲染效果 更改元素class裡面類名的順序並不能影響渲染順序 code 渲染效果 更改樣式表裡類的順序 渲染順序受到影響 結論:兩個類中有同樣的屬性覆蓋順序是css樣式表從下往上的順序 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...