<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • 原生js的ajax請求

    2018-5-29    周周

    傳統方法的缺點:

          傳統的web交互是用戶觸發一個http請求服務器,然后服務器收到之后,在做出響應到用戶,并且返回一個新的頁面,,每當服務器處理客戶端提交的請求時,客戶都只能空閑等待,并且哪怕只是一次很小的交互、只需從服務器端得到很簡單的一個數據,都要返回一個完整的HTML頁,而用戶每次都要浪費時間和帶寬去重新讀取整個頁面。這個做法浪費了許多帶寬,由于每次應用的交互都需要向服務器發送請求,應用的響應時間就依賴于服務器的響應時間。這導致了用戶界面的響應比本地應用慢得多。

    什么是ajax

           ajax的出現,剛好解決了傳統方法的缺陷。AJAX 是一種用于創建快速動態網頁的技術。通過在后臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。

    XMLHttpRequest 對象

           XMLHttpRequest對象是ajax的基礎,XMLHttpRequest 用于在后臺與服務器交換數據。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。目前所有瀏覽器都支持XMLHttpRequest

    方法
    描述
    abort()
    停止當前請求
    getAllResponseHeaders() 
     把HTTP請求的所有響應首部作為鍵/值對返回
    getResponseHeader("header")
    返回指定首部的串值
    open("method","URL",[asyncFlag],["userName"],["password"])
    建立對服務器的調用。method參數可以是GET、POST或PUT。url參數可以是相對URL或絕對URL。這個方法還包括3個可選的參數,是否異步,用戶名,密碼
    send(content)
    向服務器發送請求
    setRequestHeader("header", "value") 
    把指定首部設置為所提供的值。在設置任何首部之前必須先調用open()。設置header并和請求一起發送 ('post'方法一定要 )
    五步使用法:

           1.創建XMLHTTPRequest對象
           2.使用open方法設置和服務器的交互信息
           3.設置發送的數據,開始和服務器端交互
           4.注冊事件
           5.更新界面

    下面給大家列出get請求和post請求的例子

    get請求:      

           //步驟一:創建異步對象
           var ajax = new XMLHttpRequest();
           //步驟二:設置請求的url參數,參數一是請求的類型,參數二是請求的url,可以帶參數,動態的傳遞參數starName到服務端
           ajax.open('get','getStar.php?starName='+name);
           //步驟三:發送請求
            ajax.send();
           //步驟四:注冊事件 onreadystatechange 狀態改變就會調用
            ajax.onreadystatechange = function () {
           if (ajax.readyState==4 &&ajax.status==200) {
           //步驟五 如果能夠進到這個判斷 說明 數據 完美的回來了,并且請求的頁面是存在的
           console.log(xml.responseText);//輸入相應的內容
             }
            } 

    post請求:

           //創建異步對象  
           var xhr = new XMLHttpRequest();
           //設置請求的類型及url
           //post請求一定要添加請求頭才行不然會報錯
           xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
           xhr.open('post', '02.post.php' );
           //發送請求
           xhr.send('name=fox&age=18');
           xhr.onreadystatechange = function () {
           // 這步為判斷服務器是否正確響應
           if (xhr.readyState == 4 && xhr.status == 200) {
                  console.log(xhr.responseText);
                 }
            };    

    為了方便使用,我們可以把他封裝進方法里面,要用的時候,直接調用就好了

           function ajax_method(url,data,method,success) {
           // 異步對象
           var ajax = new XMLHttpRequest();

          // get 跟post  需要分別寫不同的代碼
          if (method=='get') {
              // get請求
              if (data) {
                  // 如果有值
                  url+='?';
                  url+=data;
              }else{

             }      

           // 設置 方法 以及 url
                ajax.open(method,url);

               // send即可
               ajax.send();
            }else{
                 // post請求
                 // post請求 url 是不需要改變
                 ajax.open(method,url);

                // 需要設置請求報文
               ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");

               // 判斷data send發送數據
              if (data) {
                // 如果有值 從send發送
                    ajax.send(data);
              }else{
                   // 木有值 直接發送即可
                  ajax.send();
                }
             }     

           // 注冊事件
           ajax.onreadystatechange = function () {
           // 在事件中 獲取數據 并修改界面顯示
                if (ajax.readyState==4&&ajax.status==200) {
                    // console.log(ajax.responseText);

                    // 將 數據 讓 外面可以使用
                   // return ajax.responseText;

                   // 當 onreadystatechange 調用時 說明 數據回來了
                  // ajax.responseText;

                  // 如果說 外面可以傳入一個 function 作為參數 success
                  success(ajax.responseText);
                 }
             }
          }

    日歷

    鏈接

    個人資料

    藍藍設計的小編 http://m.skdbbs.com

    存檔

    主站蜘蛛池模板: 精品无码国产自产拍在线观看蜜| 亚洲国产精品无码专区| 青青久久精品国产免费看| WWW国产精品内射老师| 日韩视频中文字幕精品偷拍| 亚洲精品国产成人专区| 国产精品视频永久免费播放| 完整观看高清秒播国内外精品资源| 亚洲精品线在线观看| 2018国产精华国产精品| 亚洲第一极品精品无码久久| 韩国三级中文字幕hd久久精品 | 国产精品国产三级国产| 国产精品水嫩水嫩| 青青草原精品国产亚洲av| 日韩视频中文字幕精品偷拍| 蜜臀久久99精品久久久久久| 国产乱人伦偷精品视频免观看 | 国产精品日本欧美一区二区| 久久夜色精品国产噜噜亚洲AV| 亚洲AV无码之日韩精品| 精品亚洲成α人无码成α在线观看| 91精品国产色综久久| 久久精品国产亚洲综合色| 国产成人精品久久二区二区| 国产精品成人A区在线观看| 精品日韩亚洲AV无码一区二区三区 | 2022国产精品不卡a| 国产精品国产三级国产av品爱网| 久久精品亚洲精品国产色婷 | 精品永久久福利一区二区| 亚洲AV第一页国产精品| 宅男在线国产精品无码| 一本一道久久a久久精品综合| 亚洲国产精品一区二区九九 | 久久乐国产精品亚洲综合| 久久久久久国产精品免费免费| 精品无码国产自产拍在线观看蜜| 欧美日韩国产中文精品字幕自在自线| 免费人成在线观看欧美精品| 亚洲国产精品成人|