<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> </body> <script> // ajax的工做流程 // 打電話 // 1.有電話 // 有介質 var xhr = new XMLHttpRequest(); // 2.手機的撥號鍵盤 // 在xhr身上找到發送方法 // xhr.open("get","data/data.php",true) xhr.open("get","http://localhost/ajax/data/data.php",true); // 3.監聽手機的狀態 // 監聽xhr對象的狀態 xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ // console.log("請求成功") console.log(xhr.responseText) } } // 4.能夠說話了 // 開始發送信息 xhr.send() </script> </html>
上面的代碼中,咱們經過ajax技術實現了獲取後臺PHP數據並彈出的效果。
總體的實現步驟以下:php
var xhr = new XMLHttpRequest();
2.設置請求參數;html
xhr.open('get','01.txt',true);
xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status ==200){ console.log(xhr.responseText); } }
4.發送數據ajax
xhr.send(null);
ajax = new XMLHttpRequest(); ajax = new ActiveXObject("Microsoft.XMLHTTP"); //IE5
Ajax get方法的封裝後端
get方式傳輸是在url地址以?和& 進行拼接。瀏覽器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> </body> <script> document.onclick = function(){ var url = "http://localhost/ajax/data/data.php"; ajaxGet(url,function(res){ console.log(res); },{ user:"jjj", pass:"12312321" }); } function ajaxGet(url,cb,data){ // data是對象 // 1.解析要發送的數據 data = data||{}; var str = ""; for(var i in data){ str += `${i}=${data[i]}&`; } // 欺騙瀏覽器緩存 // 在url後拼接時間戳 var d = new Date(); url = url + "?" + str + "__qft="+d.getTime(); // 3.準備ajax的過程 var xhr = new XMLHttpRequest(); xhr.open("get",url,true); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ cb(xhr.responseText) } } xhr.send(); }
後臺PHP代碼
緩存
<?php $u = @$_GET["user"]; $p = @$_GET["pass"]; echo "hello php---".$u."----".$p; ?>
這就是實現了一個ajax get方式的先後端交互數據了安全
Ajax post方法的封裝服務器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> </body> <script> document.onclick = function(){ var url = "http://localhost/ajax/data/post.php"; ajaxPost(url,function(res){ console.log(res) },{ a:10, b:20 }) } // get和post的不一樣: function ajaxPost(url,callback,data){ data = data || {}; var str = ""; for(var i in data){ str += `${i}=${data[i]}&`; } var d = new Date(); // 2-1.發送數據的位置,再也不是url url = url + "?__qft=" + d.getTime(); var xhr = new XMLHttpRequest(); // 1.open的參數 xhr.open("POST",url,true); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ callback(xhr.responseText); } } // 3.send會原模原樣的發送本身接受的數據,因此須要在發送以前設置發送數據的格式:表單格式 xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); // 2-2.而是send xhr.send(str); } // get方式: // 數據必須在url上拼接 // 只要在url上拼接數據,那麼必然是get // post方式: // 數據在send中發送,格式與get一致 </script> </html>
後臺PHP代碼app
<?php $a = @$_POST["a"]; $b = @$_POST["b"]; echo "這是接收到的post的數據:".$a."---".$b; ?>
這就是實現了一個ajax post方式的先後端交互數據了。異步