博主信息
博文 65
粉丝 2
评论 0
访问量 74954
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
异步请求这里学!实例演示Ajax-post的三种方式,小白都说:so easy....
张福根一修品牌运营
原创
1038人浏览过

实例演示Ajax-post的三种方式

方式一:通常方式

  1. <script>
  2. // 1. 创建请求对象: `new XMLHttpRequest()`
  3. const xhr = new XMLHttpRequest();
  4. // 2. 监听请求回调: `onreadystatechange`
  5. xhr.addEventListener("readystatechange", show, false);
  6. // 3. 初始化请求参数: `open(请求类型,请求地址,是否异步)`
  7. xhr.open("POST", "data/test1.php", true);
  8. // 4. 设置请求头: `setRequestHeader()`
  9. xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
  10. // 用js对象来模拟表单数据
  11. const user = {
  12. email: "admin@php.cn",
  13. password: "123456",
  14. };
  15. // 格式转换
  16. let data = JSON.stringify(user);
  17. // 5. 发送请求: `send()`
  18. xhr.send(data);
  19. // 回调函数
  20. function show(ev) {
  21. if (xhr.readyState === 4) {
  22. // 返回的数据在xhr.responseText
  23. console.log(xhr.responseText);
  24. }
  25. }
  26. </script>

data/test1.php

  1. <?php
  2. $data = key($_POST);
  3. $user = json_decode($data);
  4. echo '邮箱:'.$user->email . '密码: ' . md5($user->password);

方式二:Ajax-POST请求,直接用json

  1. <script>
  2. // 1. 创建请求对象: `new XMLHttpRequest()`
  3. const xhr = new XMLHttpRequest();
  4. // 2. 监听请求回调: `onreadystatechange`
  5. xhr.addEventListener("readystatechange", show, false);
  6. // 3. 初始化请求参数: `open(请求类型,请求地址,是否异步)`
  7. xhr.open("POST", "data/test1.php", true);
  8. // 4. 设置请求头: `setRequestHeader()`
  9. xhr.setRequestHeader("content-type", "application/json;charset=utf-8");
  10. // 用js对象来模拟表单数据
  11. const user = {
  12. email: "admin@php.cn",
  13. password: "123456",
  14. };
  15. // 格式转换
  16. let data = JSON.stringify(user);
  17. // 5. 发送请求: `send()`
  18. xhr.send(data);
  19. // 回调函数
  20. function show(ev) {
  21. if (xhr.readyState === 4) {
  22. // 返回的数据在xhr.responseText
  23. console.log(xhr.responseText);
  24. }
  25. }
  26. </script>

data/test1.php

  1. <?php
  2. $data = file_get_contents('php://input');
  3. //对象
  4. $user = json_decode($data);
  5. print_r($user);
  6. //数组
  7. $user = json_decode($data, true);
  8. print_r($user);

方式三:Ajax-POST请求-FormData

源码:

  1. <body>
  2. <form action="" onsubmit="return false;">
  3. <label for="username">用户名:</label>
  4. <input type="text" id="username" name="username" />
  5. <label for="email">邮箱:</label>
  6. <input type="email" id="email" name="email" />
  7. <button>保存</button>
  8. </form>
  9. <script>
  10. // FormData 对象: 将表单数据进行封装后统一提交
  11. const form = document.querySelector("form");
  12. const btn = document.querySelector("button");
  13. // 1. 创建请求对象: `new XMLHttpRequest()`
  14. const xhr = new XMLHttpRequest();
  15. // 监听事件
  16. btn.addEventListener("click", callback, false);
  17. function callback(ev) {
  18. // 2. 监听请求回调: `onreadystatechange`
  19. xhr.addEventListener("readystatechange", show, false);
  20. // 3. 初始化请求参数: `open(请求类型,请求地址,是否异步)`
  21. xhr.open("POST", "data/test1.php", true);
  22. // 4. 发送请求: `send()`
  23. // new FormData(form): 当前表单数据的封装
  24. xhr.send(new FormData(form));
  25. }
  26. // 请求的回调
  27. function show() {
  28. if (xhr.readyState === 4) {
  29. // 返回的数据在xhr.responseText
  30. console.log(xhr.responseText);
  31. }
  32. }
  33. </script>
  34. </body>

data/test1.php

  1. <?php
  2. print_r($_POST);
批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:抽空关注一下fetch API
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学