<em id="09ttv"></em>
    <sup id="09ttv"><pre id="09ttv"></pre></sup>
    <dd id="09ttv"></dd>

        • 原生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.sdgs6788.com

          存檔

          亚洲欧美成人综合久久久| 久久婷婷色香五月综合激情 | 中文字幕久久亚洲一区| 久久精品国产欧美日韩| 久久综合伊人77777麻豆| 久久久久久久久66精品片| 久久久午夜精品福利内容| 国产精品99久久久久久宅男小说| 久久受www免费人成_看片中文| 99久久国产精品免费一区二区| 久久综合久久自在自线精品自 | 久久一区二区三区99| 亚洲国产成人久久综合碰| 久久精品中文字幕一区| 亚洲va国产va天堂va久久| 国产L精品国产亚洲区久久| 久久国产精品免费一区二区三区| 精品久久久久久国产三级| 色狠狠久久AV五月综合| 一本久久久久久久| 久久这里都是精品| 狠狠88综合久久久久综合网| 97久久久久人妻精品专区| 欧美精品福利视频一区二区三区久久久精品| 欧美午夜A∨大片久久 | 亚洲AV无一区二区三区久久| 四虎国产精品免费久久久| 亚洲人成电影网站久久| 国产激情久久久久影院老熟女免费 | 9999国产精品欧美久久久久久| 亚洲乱码中文字幕久久孕妇黑人| 国产精品狼人久久久久影院| 色综合久久无码五十路人妻| 久久久久久国产精品免费免费| 久久精品亚洲精品国产色婷| 久久亚洲中文字幕精品一区| 国产午夜精品理论片久久| 久久久精品2019免费观看| 欧美久久久久久| 无码精品久久一区二区三区 | 国产免费福利体检区久久|