函数封装

ajax_tool.js:

  1. // 方法:ajax get 五部曲
  2. function ajax_get(url,data) {
  3. // 异步对象
  4. var ajax = new XMLHttpRequest();
  5. // url 方法
  6. // 如果是get发送数据 发送的格式为 xxx.php?name=jack&age=18
  7. // 所以 这里 需要拼接 url
  8. if (data) {
  9. // 如果有值 需要拼接字符串
  10. // 拼接为xxx.php?name=jack&age=18
  11. url+='?';
  12. url+=data;
  13. }else{
  14. }
  15. ajax.open('get',url);
  16. // 发送
  17. ajax.send();
  18. // 注册事件
  19. ajax.onreadystatechange = function () {
  20. // 在事件中 获取数据 并修改界面显示
  21. if (ajax.readyState==4&& ajax.status==200) {
  22. console.log(ajax.responseText);
  23. }
  24. }
  25. }
  26. // 方法:ajax_post五部曲
  27. function ajax_post(url,data) {
  28. // 异步对象
  29. var ajax = new XMLHttpRequest();
  30. // url 方法
  31. ajax.open('post',url);
  32. // 设置 请求报文
  33. ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  34. // 发送
  35. if (data) {
  36. // 如果 有值 post请求 是在 send中 发送给服务器
  37. ajax.send(data);
  38. }else{
  39. ajax.send();
  40. }
  41. // 注册事件
  42. ajax.onreadystatechange = function () {
  43. // 在事件中 获取数据 并修改界面显示
  44. if (ajax.readyState==4&&ajax.status==200) {
  45. console.log(ajax.responseText);
  46. }
  47. }
  48. }
  49. // 方法:将 get 跟post 封装到一起
  50. /*
  51. 参数1:url
  52. 参数2:数据
  53. 参数3:请求的方法
  54. 参数4:数据成功获取以后,调用的方法
  55. */
  56. function ajax_tool(url,data,method,success) {
  57. // 异步对象
  58. var ajax = new XMLHttpRequest();
  59. // get 跟post 需要分别写不同的代码
  60. if (method=='get') {
  61. // get请求
  62. if (data) {
  63. // 如果有值
  64. url+='?';
  65. url+=data;
  66. }else{
  67. }
  68. // 设置 方法 以及 url
  69. ajax.open(method,url);
  70. // send即可
  71. ajax.send();
  72. }else{
  73. // post请求
  74. // post请求 url 是不需要改变
  75. ajax.open(method,url);
  76. // 需要设置请求报文
  77. ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  78. // 判断data send发送数据
  79. if (data) {
  80. // 如果有值 从send发送
  81. ajax.send(data);
  82. }else{
  83. // 木有值 直接发送即可
  84. ajax.send();
  85. }
  86. }
  87. // 注册事件
  88. ajax.onreadystatechange = function () {
  89. // 在事件中 获取数据 并修改界面显示
  90. if (ajax.readyState==4&&ajax.status==200) {
  91. // console.log(ajax.responseText);
  92. // 将 数据 让 外面可以使用
  93. // return ajax.responseText;
  94. // 当 onreadystatechange 调用时 说明 数据回来了
  95. // ajax.responseText;
  96. // 数据成功获取以后,执行方法success()。
  97. //我们把获取的数据作为 success()的参数,意思是:
  98. //success方法是外面的,数据是里面给的。那数据就变相地传递到了外面去【重要】
  99. success(ajax.responseText);
  100. }
  101. }
  102. }

函数调用(get方法)

test_get.html:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <input type="button" value="测试get" id='ajax_get'>
  9. </body>
  10. </html>
  11. <!-- 导入 封装的js -->
  12. <script type="text/javascript" src='ajax_tool.js'></script>
  13. <script type="text/javascript">
  14. document.querySelector('#ajax_get').onclick = function () {
  15. // 直接使用 封装的 工具函数即可
  16. /*
  17. 参数1:url
  18. 参数2:数据
  19. 参数3:请求的方法
  20. 参数4:请求成功后,调用的方法
  21. */
  22. var backData = ajax_tool('test_get.php','name=smyhvae&skill=code','get',function(data){
  23. console.log(data);
  24. });
  25. // 测试
  26. console.log(backData);
  27. }
  28. </script>

test_get.php:

  1. <?php
  2. // 获取get提交的数据
  3. echo $_GET['skill'];
  4. ?>

函数调用(post方法)

test_post.html:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <input type="button" value="测试post" id='ajax_post'>
  9. </body>
  10. </html>
  11. <!-- 导入 封装的js -->
  12. <script type="text/javascript" src='ajax_tool.js'></script>
  13. <script type="text/javascript">
  14. document.querySelector('#ajax_post').onclick = function () {
  15. // 直接使用 封装的 工具函数即可
  16. /*
  17. 参数1:url
  18. 参数2:数据
  19. 参数3:请求的方法
  20. 参数4:数据获取成功调用的方法
  21. */
  22. var backData = ajax_tool('02.test_post.php','friend=好丽友','post',function(data){
  23. console.log(data);
  24. });
  25. // 测试
  26. console.log(backData);
  27. // 怎么样 处理数据 全部写在 匿名函数中
  28. ajax_tool('02.test_post.php','friend=好丽友','post',function(data){
  29. console.log(data);
  30. // 修改页面的显示呢?
  31. });
  32. }
  33. </script>

test_post.php:

  1. <?php
  2. echo $_POST['friend'];
  3. ?>

工程文件:

  • 2018-02-28-Ajax请求封装.rar