1. 程式人生 > >AJAX 非同步物件 get請求,post請求

AJAX 非同步物件 get請求,post請求

目錄

AJAX - 啊賈克斯

1.什麼是AJAX

    AJAX - Asynchronous Javascript And Xml              非同步的        JS      和  Xml         同步訪問:             當客戶端向伺服器傳送請求時,伺服器在處理過程中,瀏覽器只能等待             缺點:整個網頁會重新整理         非同步訪問:             當客戶端向伺服器傳送請求時,伺服器在處理操作的同時,客戶端可以做其他的事情,不需要一直等待,效率較高             優點:區域性重新整理

    使用場合:         1.搜尋建議         2.表單驗證         3.前後端完全分離

2.AJAX核心物件 非同步物件 - XMLHttpRequest

    1.什麼是XMLHttpRequest         主要稱為"非同步物件",代替瀏覽器向伺服器傳送請求並接收響應         該物件主要由JS來提供     2.建立非同步物件         主流的非同步物件是 XMLHttpRequest 型別的,         並且主流瀏覽器(IE7+,Chrome,Firefox,Safari,Oper)已經全部支援該物件         低版本瀏覽器中(IE7,6)是無法使用XMLHttpRequest,需要使用ActiveXObject來建立非同步物件

        判斷瀏覽器是否支援XMLHttpRequest         if(window.XMLHttpRequest){             //如果瀏覽器支援XMLHttpRequest的話,window.XMLHttpRequest則是一個非undefined的值,             如果瀏覽器不支援的話,此處就是一個undefined

            var xhr = new XMLHttpRequest();         }else{             // 瀏覽器不支援XMLHttpRequest

            var xhr = new ActiveXObject("Microsoft.XMLHTTP");         }

    練習:         1.建立專案 - ajax         2.建立應用 - index (配置)         3.定義訪問路徑 /01_xmlhttp/             通過檢視,顯示 01_xmlhttp.html模板         4.定義一個按鈕,點選按鈕時,根據不同的瀏覽器建立不同的非同步物件,並輸出在控制檯

    3.xhr的成員

        1.方法 - open()             作用:建立/開啟請求             語法:xhr.open(method,url,asyn)                 method:指定請求的方式,取值'get'或'post'                 url:請求地址,字串                 asyn:指定是否使用非同步的方式傳送請求                     true:使用非同步                     false:使用同步                 ex:                     //1.獲取xhr物件(createXhr在common.js中是函式名,建立非同步物件)                     var xhr=createXhr()                     //2.建立請求                     xhr.open('get','/01_server/',true)         2.屬性 - readyState             作用:請求狀態,通過不同的請求狀態來表示xhr與伺服器的互動情況0-4共5個不同的狀態                 0:請求尚未初始化                 1:已經與伺服器建立連線                 2:服務端已經接收請求                 3:請求正在處理中                 4:響應已完成         3.屬性 - status             作用:表示的是伺服器端的響應狀態碼                 200:表示伺服器正確處理所有的請求並給出響應                 403:請求被拒絕                 404:請求資源未找到                 500:伺服器內部錯誤         4.屬性 - responseText             作用:伺服器端響應回來的文字         5.事件 - onreadystatechange             作用:每當readyState的值發生改變時就要出發的操作 - 回撥函式

            在此函式中,要判斷 當readyState的值為4並且status的值為200的時候,才可以正常的接收響應資料(responseText)         6.方法 - send()             作用:傳送請求             語法:xhr.send(body)                 body:表示請求主體                     get請求的話,此處為 null                     post請求的話,此處為要提交的資料

    4.使用AJAX傳送get請求

        1.步驟             1.建立 xhr 物件             2.建立請求 - open()             3.設定回撥函式 - onreadystatechange             4.傳送請求 - send()         2.傳送帶引數的get請求             在請求地址中追加引數即可             xhr.open('get','/02_server/?uname=sf.zh',true);

    5.使用AJAX傳送post請求

            1.步驟             1.建立 / 獲取 xhr             2.建立請求 - open()             3.設定回撥函式 - onreadystatechange             4.傳送請求 - send()                 xhr.send("uname=sf.zh&upwd=123456");         2.csrf 驗證             必須手動提交 csrfmiddlewaretoken 的值到伺服器             否則無法通過csrf的驗證,伺服器會返回403             解決方案1:                 1.在模板中,通過JS獲取cookies中csrftoken的值                 2.將獲取出來的值,拼成引數,再發送給伺服器             解決方案2:                 保留...         3.必須設定一個請求訊息頭 - Content-Type             xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");             注意:該操作,要在 xhr.send() 之前增加