Ajax簡單封裝
阿新 • • 發佈:2018-01-14
ade get std 建立 配置信息 信息 回調函數 超文本 結果
學習Ajax時,雖然只是簡單學習,但是其中有get與post提交的方式,使用起來也沒有特別方便,所以將Ajax簡單封裝一下
首先需要了解Ajax的原理以及執行步驟,
a1 頁面 發生事件 1 創建xhr對象 2 打開ajax鏈接通道,鏈接服務器,配置信息和參數 3 發送數據到服務器 4 設置回調函數 5 服務器接收請求跟數據,處理請求, 做出響應 6 回調函數接收數據,執行回調函數 7 更新頁面接下來就是Ajax的封裝
function ajax(method, url, postData, opt) {//方法,地址(get與post不同),屬性值,元素 var xhr = null; //open方法 創建一個新的http請求,並指定此請求的方法、URL以及驗證信息 if (window.XMLHttpRequest) {//XMLHttpRequest可擴展超文本傳輸請求 xhr = new XMLHttpRequest;//現代瀏覽器 } else if (windou.ActiveXObject) { //ActiveXObject對象是啟用並返回 Automation 對象的引用, xhr = new ActiveXObject("Microsoft.XMLHTTP");//ie } if (method == "get") { xml.open(method, url + postData, true);//例:url="/checkUserFn?username=",postData=username //方法,地址+屬性值,異步 xhr.send(null);//發送空值 } else { xhr.open(method, url, true);//例:url=checkUserFn xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded", "charset=utf-8"); //發送表單格式的數據,charset=utf-8可帶可不帶(x-www-form-urlencoded)值對大小寫不敏感 // xhr.setRequestHeader("Content-type","application/json; charset=utf-8");//發送json格式的數據 // xhr.setRequestHeader("Content-type", "text/plain; charset=utf-8");//不指定Content-type時,此是默認值 // xhr.setRequestHeader("Content-type", "text/html; charset=utf-8");//發送html文本 xhr.send(postData);//向服務器發送請求; 例("username="+username) } xhr.onreadystatechange = function () { //存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。 if (xhr.readyState == 4 && xhr.status == 200) { //readyState存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。==4表示接收完畢了 // 0: 請求未初始化 1: 服務器連接已建立 2: 請求已接收 3: 請求處理中 4: 請求已完成,且響應已就緒 // xhr.status表示處理的結果是OK的 opt.innerHTML = xhr.responseText;//ajax請求加載完成之後才能正確獲取responseText的值 } } } //缺陷,不能打亂傳參數的順序
其中部分借閱其他資料,有缺陷的地方歡迎指正
Ajax簡單封裝