博主信息
博文 29
粉丝 0
评论 0
访问量 25581
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
ajax post请求与jsonp
牡丹飞
原创
820人浏览过

1 效果

2 代码

  1. let p_showping = document.querySelector(".showing");
  2. let form_god = document.querySelector(".god");
  3. const xhr = new XMLHttpRequest(); //1.公用请求对象
  4. xhr.addEventListener("readystatechange", show, false); //2.公用请求对象监听 readystatechange
  5. xhr.open("post", "php/ajax_post.php", true); //3.请求方式和地址设置, 打开异步请求
  6. xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded"); //4.设置请求头
  7. showing = (ev) => {
  8. p_showping.innerHTML = ev.target.innerHTML;
  9. switch (ev.target.className.substr(ev.target.className.lastIndexOf("-") + 1)) {
  10. case "post":
  11. //请求数据对象
  12. let my_god = {
  13. name: "i",
  14. power: "0123456789",
  15. };
  16. //请求数据转json
  17. let data = JSON.stringify(my_god);
  18. xhr.open("POST", "php/ajax_post.php", true); //3.请求方式和地址设置, 打开异步请求,发送一次就关了?
  19. xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded"); //4.设置请求头
  20. xhr.send(data); //5.发送请求数据
  21. break;
  22. case "json":
  23. let your_god = {
  24. name: "you",
  25. power: "9876543210",
  26. };
  27. let you_json = JSON.stringify(your_god);
  28. xhr.open("POST", "php/ajax_post_json.php", true); //3.请求方式、地址、异步请求
  29. xhr.setRequestHeader("content-type", "application/json;charset=utf-8"); //4.请求头设置json数据类型
  30. xhr.send(you_json); //5.发送请求数据
  31. break;
  32. case "formdata":
  33. xhr.open("POST", "php/ajax_post_formdata.php", true);
  34. xhr.send(new FormData(form_god));
  35. break;
  36. case "jsonp":
  37. let url = "http://jsonp.io/index.php?id=3&jsonp=show_jsonp";
  38. let jsonp_script = document.createElement("script"); //脚本元素
  39. jsonp_script.src = url; //指定url
  40. document.head.appendChild(jsonp_script); //添加元素到页头
  41. break;
  42. default:
  43. console.log("default");
  44. break;
  45. }
  46. };
  47. function show(ev) {
  48. if (xhr.readyState === 4) {
  49. // console.log("show");
  50. console.log(xhr.responseText);
  51. p_showping.innerHTML += xhr.responseText; //2.1请求返回数据显示
  52. }
  53. }
  54. function show_jsonp(user) {
  55. // 返回的数据已经自动解析成了js对象了
  56. document.querySelector("#god_name").value = user.name;
  57. document.querySelector("#god_power").value = user.email;
  58. }
  59. let btn_post = document.querySelector(".btn-post").addEventListener("click", (ev) => showing(ev), false);
  60. let btn_post_json = document.querySelector(".btn-post-json").addEventListener("click", (ev) => showing(ev), false);
  61. let btn_post_formdata = document
  62. .querySelector(".btn-post-formdata")
  63. .addEventListener("click", (ev) => showing(ev), false);
  64. let btn_jsonp = document.querySelector(".btn-jsonp").addEventListener("click", (ev) => showing(ev), false);

3 总结

感谢老师教导!
前后端代码一块儿写,感觉很好。注要是请求和响应的入门和联调。

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:前后端开发, 还一个绕不过去的坎,就是http协议, 抽空好好学一下
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学