1. 程式人生 > >ajax的原生,偽造和jquery講解

ajax的原生,偽造和jquery講解

ajax

jquery是對Ajax的一個封裝,真正的操作是封裝裏面的內容(基於內部調用原生的Ajax的XMLHTTPRequest)
Ajax還有一種是偽造ajax,所為偽造就是不用XMLHTTPRequest,利用的瀏覽器的一種技術實現的

XmlHttpRequest對象介紹

XmlHttpRequest對象的主要方法:

 void open(String method,String url,Boolen async)
   用於創建請求

   參數:
       method: 請求方式(字符串類型),如:POST、GET、DELETE...
       url:    要請求的地址(字符串類型)
       async:  是否異步(布爾類型)

b. void send(String body)
    用於發送請求

    參數:
        body: 要發送的數據(字符串類型)

c. void setRequestHeader(String header,String value)
    用於設置請求頭

    參數:
        header: 請求頭的key(字符串類型)
        vlaue:  請求頭的value(字符串類型)

d. String getAllResponseHeaders()
    獲取所有響應頭

    返回值:
        響應頭數據(字符串類型)

e. String getResponseHeader(String header)
    獲取響應頭中指定header的值

    參數:
        header: 響應頭的key(字符串類型)

    返回值:
        響應頭中指定的header對應的值

f. void abort()

    終止請求

發送
技術分享圖片
監聽狀態
技術分享圖片
技術分享圖片
技術分享圖片

<body>
<input type="text" id="i1"> + <input type="text" id="i2"> = <input type="text" id="i3">
<input type="button" value="原生提交ajax" onclick="addajax();">
<script>
    function addajax() {
        var xhr = new XMLHttpRequest();

        xhr.onreadystatechange=function () {
            if(xhr.readyState==4){
                alert(xhr.responseText)
            }
        }
         xhr.open(‘GET‘,‘/add/?i1=11&i2=13‘);
        xhr.send();
    }
</script>
</body>

技術分享圖片
上面的內容是在body裏面,後臺request.post裏面是沒有數據的,要有需要添加請求頭如下圖:
技術分享圖片

XmlHttpRequest對象的主要屬性:

a. Number readyState
   狀態值(整數)

   詳細:
      0-未初始化,尚未調用open()方法;
      1-啟動,調用了open()方法,未調用send()方法;
      2-發送,已經調用了send()方法,未接收到響應;
      3-接收,已經接收到部分響應數據;
      4-完成,已經接收到全部響應數據;

b. Function onreadystatechange
   當readyState的值改變時自動觸發執行其對應的函數(回調函數)

c. String responseText
   服務器返回的數據(字符串類型)

d. XmlDocument responseXML
   服務器返回的數據(Xml對象)

e. Number states
   狀態碼(整數),如:200、404...

f. String statesText
   狀態文本(字符串),如:OK、NotFound...

偽Ajax

iframe是可以偽造的,不會刷新。結合form來提交數據
技術分享圖片

填寫回調函數
返回來的是放在了iframe裏面。如果iframe裏面有內容了,說明有返回了。通過onload函數來加載
技術分享圖片
取值是不一樣的,因為有兩個document,需要進入這個對象裏面
技術分享圖片
技術分享圖片
最終的偽造ajax
技術分享圖片

ajax的原生,偽造和jquery講解