麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

Ajax

2019-11-14 15:36:08
字體:
供稿:網(wǎng)友

1.什么是Ajax?   (asynchronous javascript and xml)
    是一種用來改善用戶體驗的技術(shù),其實質(zhì)是利用瀏覽器提供的一個特殊對象(xmlhttpRequest)異步地向服務器發(fā)送請求,
    服務器返回部分數(shù)據(jù),瀏覽器利用這些數(shù)據(jù)對當前頁面做局部更新,整個過程,頁面無刷新,不打斷用戶的操作。
    注:
        異步: 當ajax對象(XMLHttPRequest)向服務器發(fā)送請求的時候,瀏覽器不會銷毀當前頁面,用戶仍然可以對當前頁面做其它操作
使用BS結(jié)構(gòu)時:

old-web

使用AJAX工作原理:

ajax-web

2.ajax對象
    (1)如何獲得該對象?
         function getXhr(){
              var xhr = null;
              if(window.XMLHttpRequest){
                  xhr = new XMLHttpRequest();
              }else{
                  xhr = new ActiveXObject('microsoft.XMLHttp');
              }
              return xhr;
          }
    (2)幾個重要屬性
        1)onreadystatechange:綁訂事件處理函數(shù),用來處理readystatechange事件。
            注:
                當ajax對象的readystate屬性值發(fā)生了改變,比如從0變成了1,就會產(chǎn)生該事件。
        2)readyState:有五個值,分別是0,1,2,3,4,表示ajax對象通信的狀態(tài),其中,4表示ajax對象已經(jīng)獲得了服務器返回的所有的數(shù)據(jù)。
        3)responseText:獲得服務器返回文本數(shù)據(jù)。
        4)responseXML:獲得服務器返回的xml文檔。
        5)status:獲得狀態(tài)碼。     
3.編程步驟
    step1,獲得ajax對象
    比如: var xhr = getXhr();
    step2,發(fā)送請求
      1)get請求
        xhr.open('get','check_uname.do?username=Tom',true);
        xhr.onreadystatechange=f1;   
        xhr.send(null);
       注
           true:異步地(當ajax對象(XMLHttpRequest)向服務器發(fā)送請求的時候,瀏覽器不會銷毀當前頁面,用戶仍然可以對當前頁面做其它操作)。
           false:同步地(當ajax對象(XMLHttpRequest)向服務器發(fā)送請求的時候,瀏覽器不會銷毀當前頁面,瀏覽器會鎖定當前頁面,用戶不
                   能夠?qū)Ξ斍绊撁孀銎渌僮?。   

       2)post請求       
            xhr.open('post','check_uname.do',true);
            xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
            xhr.onreadystatechange=f1;
            xhr.send('username=Tom');
            注:
                ajax對象在發(fā)送post請求時,默認不會添加"content-type"消息頭,所以,需要調(diào)用setRequestHeader方法來手動添加。

    step3,編寫服務器端的處理程序。一般來說,服務器端不需要返回完整的頁面,只需要返回部分的數(shù)據(jù)。
    step4,事件處理函數(shù)   
            function f1(){
                //獲得服務器返回的部分數(shù)據(jù)
                if(xhr.readyState == 4 && xhr.status == 200){
                    var txt = xhr.responseText;
                    //更新頁面
                    ...
                }
            }

4.緩存問題
    (1)什么是緩存問題?
        ie瀏覽器在發(fā)送get請求時,會比較請求地址是否訪問過,如果訪問過,則不再發(fā)送新的請求,而是顯示之前的訪問的結(jié)果。
    (2)解決方式
        在請求地址后面添加上一個隨機數(shù)。

       xhr.open('get','shownumber.do?'+Math.random(),true);

5.編碼問題
   (1)get請求
        1)為什么會產(chǎn)生亂碼?
         對于中文參數(shù)值,ie瀏覽器會使用"gbk"來編碼,其它瀏覽器會使用"utf-8"來編碼。服務器端默認會使用"iso-8859-1"來解碼。
        2)如何解決?
            step1,服務器端統(tǒng)一使用"utf-8"來解碼。
                修改tomcat的server.xml文件<Connector URIEncoding="utf-8"/>
                注:只針對get請求有效。
            step2,使用encodeURI函數(shù)對請求參數(shù)進行編碼。
                注:encodeURI是一個內(nèi)置的函數(shù),會使用utf-8來編碼。 

                var uri = 'check.do?username='+$F('username');
                xhr.open('get',encodeURI(uri),true);

      
   (2)post請求
        1)為什么會產(chǎn)生亂碼?
            瀏覽器會使用"utf-8"來編碼。而服務器默認使用"iso-8859-1"來解碼。
        2)如何解決?
            request.setCharacterEncoding("utf-8");

6.json(Javascript object notation)
        www.json.org
    (1)json是什么?
       輕量級的數(shù)據(jù)交換格式
       1)數(shù)據(jù)交換
           將要交換的數(shù)據(jù)轉(zhuǎn)換成一種與平臺無關(guān)的數(shù)據(jù)格式(比如xml),然后交給接收方來處理。
       2)輕量級
           相對于xml,json文檔要更小,解析速度要更快。
     (2)基本語法
          1)表示一個對象
              {屬性名:屬性值,屬性名:屬性值...}

              var obj = {"name":"明樓","age":33};
              注:
                  a.屬性名必須使用雙引號括起來。
                  b.屬性值可以是string,number,true/false,null,object。
                  c.屬性值如果是string,必須使用雙引號括起來。
          2)表示由多個對象組成的數(shù)組
              [{},{},{}....]   

              var arr = [{"name":"明樓","age":23},{"name":"明臺","age":33}];
    (3)如何使用json?
        1)將java對象(或者java對象組成的數(shù)組或者集合)轉(zhuǎn)換成json字符串的形式。
            使用json提供的jar包JSONObject,JSONArray

            java對象:

    JSONObject obj =  JSONObject.fromObject(s);

     String jsonStr = obj.toString();

    java對象組成的數(shù)組或集合:

     JSONArray obj = JSONArray.fromObject(stocks);

     String jsonStr = obj.toString();

   2)將json字符串轉(zhuǎn)換成javascript對象(或者javascript對象組成的數(shù)組)。

            prototype.js提供的evalJSON()函數(shù)。
            $(id): 依據(jù)id查找節(jié)點。
            $F(id): 依據(jù)id查找節(jié)點,返回value。
            strip():除掉字符串兩端的空格。
            evalJSON():將json字符串轉(zhuǎn)換成javascript對象或者javascript對象組成的數(shù)組。

            json字符串轉(zhuǎn)換成javascript對象:

            var str = '{"code":"600015","name":"山東高速","price":10}';

            var obj = str.evalJSON();

            java字符串轉(zhuǎn)換成javascript對象組成的數(shù)組:

           var str = '[{"name":"明樓","age":23},{"name":"明臺","age":33}]';

            var arr = str.evalJSON();


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 污黄视频在线观看 | 男女亲热网站 | 欧美精品久久久久久久久老牛影院 | 精品在线免费播放 | 青青国产在线视频 | 国外成人在线视频 | 国产精品久久久久无码av | 国产精品入口夜色视频大尺度 | 日本精品久久久久 | 失禁高潮抽搐喷水h | 精品国产一区二区三区成人影院 | 九九视屏 | 久久蜜臀一区二区三区av | 性欧美极品xxxx欧美一区二区 | 国产精品久久久久久久久久三级 | 国产精品免费一区二区三区四区 | 在线a| 欧美日韩亚洲成人 | 欧美一级淫片免费视频黄 | 国产精品一区二区在线 | 国产理论视频在线观看 | 亚洲视频综合 | 一区二区久久久久草草 | 久久免费毛片 | 激情久久精品 | 美国黄色毛片女人性生活片 | 国产91小视频在线观看 | 一级黄色大片在线观看 | 中日无线码1区 | 国产一区二区三区四区五区精品 | 久久久av亚洲男天堂 | 91羞羞 | 日韩黄在线观看 | 欧美a视频 | 伊人99在线 | 久久久国产精品成人免费 | 亚洲一区二区三区四区精品 | 视频一区二区三区免费观看 | 黄污网站在线 | 999精品国产| 欧美成在人线a免费 |