<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        圖文教程AJAX使用詳解(附視頻)

        來源:懂視網 責編:小采 時間:2020-11-27 19:52:13
        文檔

        圖文教程AJAX使用詳解(附視頻)

        圖文教程AJAX使用詳解(附視頻):這次給大家帶來圖文教程AJAX使用詳解,圖文教程AJAX使用的注意事項有哪些,下面就是實戰案例,一起來看一下。Ajax的工作原理相當于在用戶和服務器之間加了—個中間層(AJAX引擎),使用戶操作與服務器響應異步化。網上關于介紹ajax的原理有很多,本文將通過圖文
        推薦度:
        導讀圖文教程AJAX使用詳解(附視頻):這次給大家帶來圖文教程AJAX使用詳解,圖文教程AJAX使用的注意事項有哪些,下面就是實戰案例,一起來看一下。Ajax的工作原理相當于在用戶和服務器之間加了—個中間層(AJAX引擎),使用戶操作與服務器響應異步化。網上關于介紹ajax的原理有很多,本文將通過圖文
        這次給大家帶來圖文教程AJAX使用詳解,圖文教程AJAX使用的注意事項有哪些,下面就是實戰案例,一起來看一下。

        Ajax的工作原理相當于在用戶和服務器之間加了—個中間層(AJAX引擎),使用戶操作與服務器響應異步化。網上關于介紹ajax的原理有很多,本文將通過圖文的形式給大家更直接明了的介紹,有需要的可以參考學習。

        相關視頻教程推薦:《PHP與Ajax極速入門》

        先上原理圖:

        背景:

        1.傳統的Web網站,提交表單,需要重新加載整個頁面。

        2.如果服務器長時間未能返回Response,則客戶端將會無響應,用戶體驗很差。

        3.服務端返回Response后,瀏覽器需要加載整個頁面,對瀏覽器的負擔也是很大的。

        4.瀏覽器提交表單后,發送的數據量大,造成網絡的性能問題。

        問題:

        1.如何改進?

        2.AJAX是什么?

        3.有什么優勢?

        4.有什么缺點?

        一、什么是 AJAX

        1.為什么需要AJAX

        當需要從服務器獲取數據,并刷新頁面的操作,如果不采用AJAX,則需要用提交整個表單的方式,當提交表單時,發送請求給服務器,頁面需要等待服務器發送完response后,頁面才能恢復操作。

        2.AJAX的概念:

        1.AJAX = 異步 JavaScript 和 XML。

        2.AJAX 是一種用于創建快速動態網頁的技術。

        3.通過在后臺與服務器進行少量數據交換,可以使網頁實現異步更新。

        4.可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。

        3.什么叫異步

        當前頁面發送一個請求給服務器,當前頁面不需要等待服務器響應才能操作網頁。發送完請求之后,當前頁面可以繼續瀏覽,操作。

        4.什么叫局部刷新

        我們可以用兩種方式來實現部分刷新。

        1. iframe頁面重載的方式。

        這種方式雖然實現了部分刷新,但是是頁面的重載,所以也會帶來性能上的問題。

        Step1.在頁面中定義一個Iframe

        <iframe id="indexFrame" name="index" width="1000" height="800"
         frameborder="0" marginwidth="0" marginheight="0" scrolling="yes" style="margin-top:100px;"></iframe>

        Step2.設置Iframe的src

        var indexFrame = document.getElementById("indexFrame");
        indexFrame.src = "introduction.php";

        Step3.添加一個button的點擊事件,當點擊這個button時,重新設置Iframe的src,實現iframe里面的頁面刷新。Iframe外面的內容不刷新。

        <button id="room" onclick='IndexClick("room")'>Click Me!</button>
        function IndexClick(moduleKey) {
         var indexFrame = document.getElementById("indexFrame");
         if(indexFrame == null)
         {
         indexFrame = parent.document.getElementById("indexFrame");
         }
         var url = "introduction.php";
         switch (moduleKey) {
         case "introduction":
         url = "introduction.php";
         break;
         case "room":
         url = "room.php";
         break;
         default:
         {
         }
         }
         indexFrame.src = url;
        }

        通過這種方式我們可以實現一個導航欄的功能:

            

          2.AJAX方式

            Step1.JavaScrpit發送異步請求

            Step2.服務端查詢數據庫,返回數據

            Step3.服務端返回Response

            Step4.客戶端根據返回的Response,來用JavaScript操作DOM。

          看下面的例子:

          

          當我們切換DropDownList中的Item時,JavaScript發送異步請求給Server端,Server端返回數據,然后JavaScript將數據解析出來,拼接了一個Table,將Table呈現在頁面上。

        二、提交Form表單的原理

        1.代碼

        客戶端代碼:

        <form id="form1" action="Test.ashx" method="get">
         您的姓名1:<input type="text" name="fname" size="20" />
         <input type="submit" name="submit" value="Sumbit">
         </form>

        服務端代碼:

        public void ProcessRequest (HttpContext context)
        {
         //Delay
         for (int i = 0; i < 2; i++)
         {
         System.Threading.Thread.Sleep(1000);
         }
         
         //從Requset.Form中獲取fname的值。使用Form獲取請求的鍵值對的值的前提條件是HTTP request Content-Type 值必須是"application/x-www-form-urlencoded" 或 "multipart/form-data".
         string fname = context.Request["fname"];
         
         context.Response.ContentType = "text/plain";
         //將字符串寫入 HTTP 響應
        輸出流。 context.Response.Write("Hello World " + fname); }

        2.將代碼部署到IIS

        3.打開站點:

        http://localhost:8003/Test.html

        4.輸入“Jackson0714”然后點擊Sumbit按鈕,頁面會重新刷新,顯示"Hello World Jackson0714"

        5.提交Form表單后,頁面發送請求和服務端返回響應的流程

        6.通過抓包,我們可以得到HTTP Headers

        瀏覽器發送HTTP給服務端,采取的協議是HTTP協議。

        在傳輸過程中,我們可以看下HTTP Headers。

        三、AJAX提交請求和服務響應的原理

        1.代碼

        客戶端HTML代碼:

        <!DOCTYPE html>
         
        <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
        <head>
         <meta charset="utf-8" />
         <title></title>
         <script type="text/javascript" src="Ajax.js"></script>
         
        </head>
        <body>
         <p id="Test" style="background-color:#40eeee">
         您的姓名2:<input type="text" id="testGetName" size="20" />
         <button type="button" onclick="testGet();">Ajax Get請求</button>
         </p>
         
         <p id="Test" style="background-color:#ff6a00">
         您的姓名3:<input type="text" id="testPostName" size="20" />
         <button type="button" onclick="testPost();">Ajax Post請求</button>
         </p>
         
         <p id="myp" />
         
        </body>
        </html>

        客戶端JS代碼:

        var xmlhttp = createRequest();
         
        function testGet() {
         var fname = document.getElementById("testGetName").value;
         xmlhttp.open("GET", "Test.ashx?fname=" + fname + "&random=" + Math.random() , true);
         xmlhttp.onreadystatechange = callback;
         xmlhttp.send(null);
        }
         
        function testPost() {
         var fname = document.getElementById("testPostName").value;
         xmlhttp.open("POST", "Test.ashx?" + "&random=" + Math.random() , true);
         xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
         xmlhttp.onreadystatechange = callback;
         xmlhttp.send("fname="+fname);
         
        }
         
        function createRequest() {
         var xmlhttp;
         if (window.XMLHttpRequest) {
         // code for IE7+, Firefox, Chrome, Opera, Safari
         xmlhttp = new XMLHttpRequest();
         }
         else {
         // code for IE6, IE5
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }
         return xmlhttp
        }
         
        function callback() {
         if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
         document.getElementById("myp").innerHTML = xmlhttp.responseText;
         }
        }

        這里有一點需要注意

        var xmlhttp = createRequest(); 。

        1.讓服務端能夠操作這個變量,如果定義成局部變量,則服務端返回response時,不能對xmlhttp的屬性賦值。回調函數要求request是全局的,才能訪問這個變量和它的屬性值。

        2.定義成全局變量后,可能出現兩個請求或多個請求共享同一個請求對象。而這個請求對象只能存放一個回調函數來處理服務器響應。當服務器返回兩個請求的Response后,可能會調用后指定的回調函數。所以可能有兩個完全不同的服務器響應由同一個回調函數處理,而這可能并不是正確的處理。解決辦法是創建兩個不同的請求對象。

        服務端代碼不變。

        2.輸入“Jackson0714”然后點擊Sumbit按鈕,頁面不會刷新,在最下面顯示"Hello World Jackson0714"

        3.AJAX發送請求和服務端返回響應的流程

        4.通過抓包,我們可以得到HTTP Headers

        瀏覽器發送HTTP給服務端,采取的協議是HTTP協議。

        在傳輸過程中,我們可以看下HTTP Headers:

        5.AJAX GET和POST方式區別

        AJAX發送請求和POST發送請求的代碼如下:

        //GET方式
        function testGet() {
         var fname = document.getElementById("testGetName").value;
         xmlhttp.open("GET", "Test.ashx?fname=" + fname + "&random=" + Math.random() , true);
        xmlhttp.onreadystatechange = callback;
         xmlhttp.send(null);
        }
         
        //POST方式
        function testPost() {
         var fname = document.getElementById("testPostName").value;
         xmlhttp.open("POST", "Test.ashx?" + "&random=" + Math.random() , true);
         xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
         xmlhttp.onreadystatechange = callback;
         xmlhttp.send("fname="+fname);
         
        }

        四、XMLHttpRequest 對象的知識

        1.XMLHttpRequest 對象的方法

        2.XMLHttpRequest 對象的屬性

        五、JQuery實現AJAX

        下面的代碼實現了當切換DropDownList的item時,觸發getWeeklyCalendar方法,用JQuery的類庫方法$.ajax來發送AJAX請求。

        客戶端JQuery代碼

        function getWeeklyCalendar(name,currentDate,mode){
         $.ajax({
         type:'POST',
         url:'weekProcess.php',data:'func=getWeeklyCalender&name='+name+'¤tDate='+currentDate+'& mode='+mode,
         success:function(data){
         paintWeeklyCandler(data);
         }
         });
        }

        后臺成功返回Response后,執行paintWeeklyCandler(data)方法

        后臺PHP代碼

        <?php<br> //定義返回的Response的格式為JSON格式
         header('Content-type: text/json');<br> //引入自定義的數據庫連接文件
         include 'dbConfig.php';<br> //引入自定義的設置session的文件
         include_once 'session.php';
         /*
         * Function requested by Ajax
         */
         if(isset($_POST['func']) && !empty($_POST['func']))
         {
         switch($_POST['func']){
          case 'getWeeklyCalender':
             getWeeklyCalender($_POST['name'],$_POST['currentDate'],$_POST['mode']);
              break;
             case 'getWeeklyStatus':
             getWeeklyStatus($_POST['name'],$_POST['currentDate'],$_POST['mode']);
             break;
             case 'getEvents':
             getEvents($_POST['date'],$_POST['name']);
             break;
            default:
             break;
         }
        }
         function getWeeklyCalender($name = '',$currentDate = '',$mode = '')
         {
         //邏輯代碼<br>    <br> <br>    //返回JSON格式的Response
         echo json_encode(array('result'=>$DaysOfWeekResultsArray));
         }<br>?>

        六、優勢

        1.使用異步方式與服務器通信,頁面不需要重新加載,頁面無刷新

        2.按需取數據,減少服務器的負擔

        3.使得Web應用程序更為迅捷地響應用戶交互

        4.AJAX基于標準化的并被廣泛支持的技術,不需要下載瀏覽器插件或者小程序,但需要客戶允許JavaScript在瀏覽器上執行

        5.瀏覽器的內容和服務端代碼進行分離。頁面的內容全部由JAVAScript來控制,服務端負責邏輯的校驗和從數據庫中拿數據。

        七、缺點

        1.安全問題:將服務端的方法暴露出來,黑客可利用這一點進行攻擊

        2.大量JS代碼,容易出錯

        3.Ajax的無刷新重載,由于頁面的變化沒有刷新重載那么明顯,所以容易給用戶帶來困擾——用戶不太清楚現在的數據是新的還是已經更新過的;現有的解決有:在相關位置提示、數據更新的區域設計得比較明顯、數據更新后給用戶提示等

        4.可能破壞瀏覽器后退按鈕的正常行為;

        5.一些手持設備(如手機、PAD等)自帶的瀏覽器現在還不能很好的支持Ajax

        八、應用場景

        1.對數據進行過濾和操縱相關數據的場景

        2.添加/刪除樹節點

        3.添加/刪除列表中的某一行記錄

        4.切換下拉列表item

        5.注冊用戶名重名的校驗

        九、不適用場景

        1.整個頁面內容的保存

        2.導航

        相信看了本文案例你已經掌握了方法,更多精彩請關注Gxl網其它相關文章!

        推薦閱讀:

        ajax在不刷新的情況下實現評論功能

        Ajax概述與實現

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        圖文教程AJAX使用詳解(附視頻)

        圖文教程AJAX使用詳解(附視頻):這次給大家帶來圖文教程AJAX使用詳解,圖文教程AJAX使用的注意事項有哪些,下面就是實戰案例,一起來看一下。Ajax的工作原理相當于在用戶和服務器之間加了—個中間層(AJAX引擎),使用戶操作與服務器響應異步化。網上關于介紹ajax的原理有很多,本文將通過圖文
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产免费久久精品丫丫| 久久精品亚洲日本波多野结衣| ssswww日本免费网站片| 日韩亚洲精品福利| sss在线观看免费高清| 中文字幕亚洲一区二区va在线| 深夜久久AAAAA级毛片免费看| 2022中文字字幕久亚洲| 国产A∨免费精品视频| 亚洲国产AV无码专区亚洲AV| 99热在线精品免费播放6| 亚洲最大在线视频| 成人性生交大片免费看午夜a| 亚洲高清毛片一区二区| 免费观看四虎精品国产永久| 一个人看的免费高清视频日本| 国产成人精品日本亚洲专区61| 美女视频黄的免费视频网页| 亚洲欧洲中文日产| 国产极品粉嫩泬免费观看| 一级毛片不卡免费看老司机| 亚洲成色WWW久久网站| 亚洲国产精品免费在线观看| 亚洲大尺度无码无码专线一区 | 91免费播放人人爽人人快乐| 亚洲综合激情五月色一区| 亚洲Av无码乱码在线播放| 国产精品白浆在线观看免费| 亚洲中文字幕久在线| 亚洲av区一区二区三| 精品无码人妻一区二区免费蜜桃| 日韩亚洲人成在线| 亚洲欧洲精品无码AV| 亚洲精品动漫免费二区| 亚洲免费在线观看| 亚洲国产综合第一精品小说| 免费人成在线观看视频播放| 91av视频免费在线观看| 美女露100%胸无遮挡免费观看| 4444亚洲国产成人精品| 国产三级免费观看|