<!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方式的先后端交互数据了。异步