首頁  >  文章  >  web前端  >  jQuery+ajax實現局部刷新

jQuery+ajax實現局部刷新

巴扎黑
巴扎黑原創
2017-06-26 14:34:001446瀏覽

在專案中,常常會用到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?1.1.11"></script>23     <script src="js/jq-load.js?1.1.11"></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下的#container10 });

註:此種方法用到了一些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?1.1.11"></script> 7         <script src="js/user.js?1.1.11"></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:

$(".userMenu").on("click", "li",  sId = $().data("id");  window.location.hash = sId;   sId = "#center": pathn = "user_center.html"; i = 0;  "#account": pathn = "user_account.html"; i = 1;  "#trade": pathn = "user_trade.html"; i = 2;  "#info": pathn = "user_info.html"; i = 3; : pathn = "user_center.html"; i = 0; "#content").load(pathn); $(".userMenu li").eq(i).addClass("current").siblings().removeClass("current");  sId =

user_center.html:

#
<div>用户中心
    ……</div>

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

總結:

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


 

以上是jQuery+ajax實現局部刷新的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn