• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
    當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

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

    來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 19:52:13
    文檔

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

    圖文教程AJAX使用詳解(附視頻):這次給大家?guī)?lái)圖文教程AJAX使用詳解,圖文教程AJAX使用的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。Ajax的工作原理相當(dāng)于在用戶和服務(wù)器之間加了—個(gè)中間層(AJAX引擎),使用戶操作與服務(wù)器響應(yīng)異步化。網(wǎng)上關(guān)于介紹ajax的原理有很多,本文將通過(guò)圖文
    推薦度:
    導(dǎo)讀圖文教程AJAX使用詳解(附視頻):這次給大家?guī)?lái)圖文教程AJAX使用詳解,圖文教程AJAX使用的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。Ajax的工作原理相當(dāng)于在用戶和服務(wù)器之間加了—個(gè)中間層(AJAX引擎),使用戶操作與服務(wù)器響應(yīng)異步化。網(wǎng)上關(guān)于介紹ajax的原理有很多,本文將通過(guò)圖文
    這次給大家?guī)?lái)圖文教程AJAX使用詳解,圖文教程AJAX使用的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。

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

    相關(guān)視頻教程推薦:《PHP與Ajax極速入門》

    先上原理圖:

    背景:

    1.傳統(tǒng)的Web網(wǎng)站,提交表單,需要重新加載整個(gè)頁(yè)面。

    2.如果服務(wù)器長(zhǎng)時(shí)間未能返回Response,則客戶端將會(huì)無(wú)響應(yīng),用戶體驗(yàn)很差。

    3.服務(wù)端返回Response后,瀏覽器需要加載整個(gè)頁(yè)面,對(duì)瀏覽器的負(fù)擔(dān)也是很大的。

    4.瀏覽器提交表單后,發(fā)送的數(shù)據(jù)量大,造成網(wǎng)絡(luò)的性能問(wèn)題。

    問(wèn)題:

    1.如何改進(jìn)?

    2.AJAX是什么?

    3.有什么優(yōu)勢(shì)?

    4.有什么缺點(diǎn)?

    一、什么是 AJAX

    1.為什么需要AJAX

    當(dāng)需要從服務(wù)器獲取數(shù)據(jù),并刷新頁(yè)面的操作,如果不采用AJAX,則需要用提交整個(gè)表單的方式,當(dāng)提交表單時(shí),發(fā)送請(qǐng)求給服務(wù)器,頁(yè)面需要等待服務(wù)器發(fā)送完response后,頁(yè)面才能恢復(fù)操作。

    2.AJAX的概念:

    1.AJAX = 異步 JavaScript 和 XML。

    2.AJAX 是一種用于創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)。

    3.通過(guò)在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,可以使網(wǎng)頁(yè)實(shí)現(xiàn)異步更新。

    4.可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下,對(duì)網(wǎng)頁(yè)的某部分進(jìn)行更新。

    3.什么叫異步

    當(dāng)前頁(yè)面發(fā)送一個(gè)請(qǐng)求給服務(wù)器,當(dāng)前頁(yè)面不需要等待服務(wù)器響應(yīng)才能操作網(wǎng)頁(yè)。發(fā)送完請(qǐng)求之后,當(dāng)前頁(yè)面可以繼續(xù)瀏覽,操作。

    4.什么叫局部刷新

    我們可以用兩種方式來(lái)實(shí)現(xiàn)部分刷新。

    1. iframe頁(yè)面重載的方式。

    這種方式雖然實(shí)現(xiàn)了部分刷新,但是是頁(yè)面的重載,所以也會(huì)帶來(lái)性能上的問(wèn)題。

    Step1.在頁(yè)面中定義一個(gè)Iframe

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

    Step2.設(shè)置Iframe的src

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

    Step3.添加一個(gè)button的點(diǎn)擊事件,當(dāng)點(diǎn)擊這個(gè)button時(shí),重新設(shè)置Iframe的src,實(shí)現(xiàn)iframe里面的頁(yè)面刷新。Iframe外面的內(nèi)容不刷新。

    <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;
    }

    通過(guò)這種方式我們可以實(shí)現(xiàn)一個(gè)導(dǎo)航欄的功能:

        

      2.AJAX方式

        Step1.JavaScrpit發(fā)送異步請(qǐng)求

        Step2.服務(wù)端查詢數(shù)據(jù)庫(kù),返回?cái)?shù)據(jù)

        Step3.服務(wù)端返回Response

        Step4.客戶端根據(jù)返回的Response,來(lái)用JavaScript操作DOM。

      看下面的例子:

      

      當(dāng)我們切換DropDownList中的Item時(shí),JavaScript發(fā)送異步請(qǐng)求給Server端,Server端返回?cái)?shù)據(jù),然后JavaScript將數(shù)據(jù)解析出來(lái),拼接了一個(gè)Table,將Table呈現(xiàn)在頁(yè)面上。

    二、提交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>

    服務(wù)端代碼:

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

    2.將代碼部署到IIS

    3.打開(kāi)站點(diǎn):

    http://localhost:8003/Test.html

    4.輸入“Jackson0714”然后點(diǎn)擊Sumbit按鈕,頁(yè)面會(huì)重新刷新,顯示"Hello World Jackson0714"

    5.提交Form表單后,頁(yè)面發(fā)送請(qǐng)求和服務(wù)端返回響應(yīng)的流程

    6.通過(guò)抓包,我們可以得到HTTP Headers

    瀏覽器發(fā)送HTTP給服務(wù)端,采取的協(xié)議是HTTP協(xié)議。

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

    三、AJAX提交請(qǐng)求和服務(wù)響應(yīng)的原理

    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請(qǐng)求</button>
     </p>
     
     <p id="Test" style="background-color:#ff6a00">
     您的姓名3:<input type="text" id="testPostName" size="20" />
     <button type="button" onclick="testPost();">Ajax Post請(qǐng)求</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;
     }
    }

    這里有一點(diǎn)需要注意

    var xmlhttp = createRequest(); 。

    1.讓服務(wù)端能夠操作這個(gè)變量,如果定義成局部變量,則服務(wù)端返回response時(shí),不能對(duì)xmlhttp的屬性賦值。回調(diào)函數(shù)要求request是全局的,才能訪問(wèn)這個(gè)變量和它的屬性值。

    2.定義成全局變量后,可能出現(xiàn)兩個(gè)請(qǐng)求或多個(gè)請(qǐng)求共享同一個(gè)請(qǐng)求對(duì)象。而這個(gè)請(qǐng)求對(duì)象只能存放一個(gè)回調(diào)函數(shù)來(lái)處理服務(wù)器響應(yīng)。當(dāng)服務(wù)器返回兩個(gè)請(qǐng)求的Response后,可能會(huì)調(diào)用后指定的回調(diào)函數(shù)。所以可能有兩個(gè)完全不同的服務(wù)器響應(yīng)由同一個(gè)回調(diào)函數(shù)處理,而這可能并不是正確的處理。解決辦法是創(chuàng)建兩個(gè)不同的請(qǐng)求對(duì)象。

    服務(wù)端代碼不變。

    2.輸入“Jackson0714”然后點(diǎn)擊Sumbit按鈕,頁(yè)面不會(huì)刷新,在最下面顯示"Hello World Jackson0714"

    3.AJAX發(fā)送請(qǐng)求和服務(wù)端返回響應(yīng)的流程

    4.通過(guò)抓包,我們可以得到HTTP Headers

    瀏覽器發(fā)送HTTP給服務(wù)端,采取的協(xié)議是HTTP協(xié)議。

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

    5.AJAX GET和POST方式區(qū)別

    AJAX發(fā)送請(qǐng)求和POST發(fā)送請(qǐng)求的代碼如下:

    //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 對(duì)象的知識(shí)

    1.XMLHttpRequest 對(duì)象的方法

    2.XMLHttpRequest 對(duì)象的屬性

    五、JQuery實(shí)現(xiàn)AJAX

    下面的代碼實(shí)現(xiàn)了當(dāng)切換DropDownList的item時(shí),觸發(fā)getWeeklyCalendar方法,用JQuery的類庫(kù)方法$.ajax來(lái)發(fā)送AJAX請(qǐng)求。

    客戶端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);
     }
     });
    }

    后臺(tái)成功返回Response后,執(zhí)行paintWeeklyCandler(data)方法

    后臺(tái)PHP代碼

    <?php<br> //定義返回的Response的格式為JSON格式
     header('Content-type: text/json');<br> //引入自定義的數(shù)據(jù)庫(kù)連接文件
     include 'dbConfig.php';<br> //引入自定義的設(shè)置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>?>

    六、優(yōu)勢(shì)

    1.使用異步方式與服務(wù)器通信,頁(yè)面不需要重新加載,頁(yè)面無(wú)刷新

    2.按需取數(shù)據(jù),減少服務(wù)器的負(fù)擔(dān)

    3.使得Web應(yīng)用程序更為迅捷地響應(yīng)用戶交互

    4.AJAX基于標(biāo)準(zhǔn)化的并被廣泛支持的技術(shù),不需要下載瀏覽器插件或者小程序,但需要客戶允許JavaScript在瀏覽器上執(zhí)行

    5.瀏覽器的內(nèi)容和服務(wù)端代碼進(jìn)行分離。頁(yè)面的內(nèi)容全部由JAVAScript來(lái)控制,服務(wù)端負(fù)責(zé)邏輯的校驗(yàn)和從數(shù)據(jù)庫(kù)中拿數(shù)據(jù)。

    七、缺點(diǎn)

    1.安全問(wèn)題:將服務(wù)端的方法暴露出來(lái),黑客可利用這一點(diǎn)進(jìn)行攻擊

    2.大量JS代碼,容易出錯(cuò)

    3.Ajax的無(wú)刷新重載,由于頁(yè)面的變化沒(méi)有刷新重載那么明顯,所以容易給用戶帶來(lái)困擾——用戶不太清楚現(xiàn)在的數(shù)據(jù)是新的還是已經(jīng)更新過(guò)的;現(xiàn)有的解決有:在相關(guān)位置提示、數(shù)據(jù)更新的區(qū)域設(shè)計(jì)得比較明顯、數(shù)據(jù)更新后給用戶提示等

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

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

    八、應(yīng)用場(chǎng)景

    1.對(duì)數(shù)據(jù)進(jìn)行過(guò)濾和操縱相關(guān)數(shù)據(jù)的場(chǎng)景

    2.添加/刪除樹節(jié)點(diǎn)

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

    4.切換下拉列表item

    5.注冊(cè)用戶名重名的校驗(yàn)

    九、不適用場(chǎng)景

    1.整個(gè)頁(yè)面內(nèi)容的保存

    2.導(dǎo)航

    相信看了本文案例你已經(jīng)掌握了方法,更多精彩請(qǐng)關(guān)注Gxl網(wǎng)其它相關(guān)文章!

    推薦閱讀:

    ajax在不刷新的情況下實(shí)現(xiàn)評(píng)論功能

    Ajax概述與實(shí)現(xiàn)

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

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

    圖文教程AJAX使用詳解(附視頻):這次給大家?guī)?lái)圖文教程AJAX使用詳解,圖文教程AJAX使用的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。Ajax的工作原理相當(dāng)于在用戶和服務(wù)器之間加了—個(gè)中間層(AJAX引擎),使用戶操作與服務(wù)器響應(yīng)異步化。網(wǎng)上關(guān)于介紹ajax的原理有很多,本文將通過(guò)圖文
    推薦度:
    標(biāo)簽: 視頻 教程 視頻教程
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 精品久久人人妻人人做精品| 日韩精品人妻系列无码专区| 亚洲精品午夜国产VA久久成人| www.久久精品| 亚洲人成精品久久久久| 精品成人av一区二区三区| 久久精品国产久精国产| 精品久久久久久成人AV| 亚洲精品亚洲人成人网| 久久人人爽人人精品视频| 国产成人1024精品免费| 精品国产自在在线在线观看| 国产精品无码午夜福利| 亚洲国产精品特色大片观看完整版| 好湿好大硬得深一点动态图91精品福利一区二区 | 99热亚洲色精品国产88| 亚洲高清专区日韩精品| 亚洲国产成人精品91久久久| 久久久久国产日韩精品网站| 精品久久久久久国产三级| 国产三级精品三级在专区| 国产精品.XX视频.XXTV| 97精品国产自在现线免费观看| 久久精品一区二区| 久久综合九色综合精品| 青青青青久久精品国产h| 欧美日韩精品一区二区在线播放| 久久精品国产精品亚洲精品| 亚洲精品理论电影在线观看| 亚洲精品高清国产一久久| 欧美日韩精品一区二区在线播放| 亚洲欧美日韩精品久久| 人精品影院| 国产成人精品久久综合 | 亚洲AV无码久久精品狠狠爱浪潮 | 精品一区二区三区在线视频| 久久91精品国产91久久小草| 久久精品国产影库免费看 | 国产精品亚洲片在线观看不卡| 精品麻豆丝袜高跟鞋AV| 91老司机深夜福利精品视频在线观看 |