原生js的ajax請求
阿新 • • 發佈:2020-09-17
原生js的ajax請求
ajax是一種用於建立快速動態網頁的技術。通過在後臺與伺服器進行少量資料交換、是網頁實現非同步更新(在不重新載入整個網頁的情況下,對網頁的某部分進行更新)
XMLHttpRequest物件是ajax的基礎,用於在後臺與伺服器交換資料。這意味著可以再不重新載入整個網頁的情況下,對網頁的某部分進行更新。
eq:
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(ajax.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); } } }