函数封装
ajax_tool.js:
// 方法:ajax get 五部曲function ajax_get(url,data) {// 异步对象var ajax = new XMLHttpRequest();// url 方法// 如果是get发送数据 发送的格式为 xxx.php?name=jack&age=18// 所以 这里 需要拼接 urlif (data) {// 如果有值 需要拼接字符串// 拼接为xxx.php?name=jack&age=18url+='?';url+=data;}else{}ajax.open('get',url);// 发送ajax.send();// 注册事件ajax.onreadystatechange = function () {// 在事件中 获取数据 并修改界面显示if (ajax.readyState==4&& ajax.status==200) {console.log(ajax.responseText);}}}// 方法:ajax_post五部曲function ajax_post(url,data) {// 异步对象var ajax = new XMLHttpRequest();// url 方法ajax.open('post',url);// 设置 请求报文ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");// 发送if (data) {// 如果 有值 post请求 是在 send中 发送给服务器ajax.send(data);}else{ajax.send();}// 注册事件ajax.onreadystatechange = function () {// 在事件中 获取数据 并修改界面显示if (ajax.readyState==4&&ajax.status==200) {console.log(ajax.responseText);}}}// 方法:将 get 跟post 封装到一起/*参数1:url参数2:数据参数3:请求的方法参数4:数据成功获取以后,调用的方法*/function ajax_tool(url,data,method,success) {// 异步对象var ajax = new XMLHttpRequest();// get 跟post 需要分别写不同的代码if (method=='get') {// get请求if (data) {// 如果有值url+='?';url+=data;}else{}// 设置 方法 以及 urlajax.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;// 数据成功获取以后,执行方法success()。//我们把获取的数据作为 success()的参数,意思是://success方法是外面的,数据是里面给的。那数据就变相地传递到了外面去【重要】success(ajax.responseText);}}}
函数调用(get方法)
test_get.html:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><input type="button" value="测试get" id='ajax_get'></body></html><!-- 导入 封装的js --><script type="text/javascript" src='ajax_tool.js'></script><script type="text/javascript">document.querySelector('#ajax_get').onclick = function () {// 直接使用 封装的 工具函数即可/*参数1:url参数2:数据参数3:请求的方法参数4:请求成功后,调用的方法*/var backData = ajax_tool('test_get.php','name=smyhvae&skill=code','get',function(data){console.log(data);});// 测试console.log(backData);}</script>
test_get.php:
<?php// 获取get提交的数据echo $_GET['skill'];?>
函数调用(post方法)
test_post.html:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><input type="button" value="测试post" id='ajax_post'></body></html><!-- 导入 封装的js --><script type="text/javascript" src='ajax_tool.js'></script><script type="text/javascript">document.querySelector('#ajax_post').onclick = function () {// 直接使用 封装的 工具函数即可/*参数1:url参数2:数据参数3:请求的方法参数4:数据获取成功调用的方法*/var backData = ajax_tool('02.test_post.php','friend=好丽友','post',function(data){console.log(data);});// 测试console.log(backData);// 怎么样 处理数据 全部写在 匿名函数中ajax_tool('02.test_post.php','friend=好丽友','post',function(data){console.log(data);// 修改页面的显示呢?});}</script>
test_post.php:
<?phpecho $_POST['friend'];?>
工程文件:
- 2018-02-28-Ajax请求封装.rar
