ajax的原生,偽造和jquery講解
阿新 • • 發佈:2018-03-12
ajaxjquery是對Ajax的一個封裝,真正的操作是封裝裏面的內容(基於內部調用原生的Ajax的XMLHTTPRequest)
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講解