博客列表 >ajax post请求与jsonp

ajax post请求与jsonp

牡丹飞
牡丹飞原创
2020年11月09日 11:58:33612浏览

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 总结

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

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议