博客列表 >数组函数、json、ajax、cors跨域

数组函数、json、ajax、cors跨域

手机用户1576673622
手机用户1576673622原创
2021年04月04日 18:35:03499浏览

数组函数

  1. // 栈方法
  2. // 1 栈 :最后进最先出
  3. // 2 队 :先进先出
  4. let arr = []
  5. // 栈 puse() pop() 在尾部进行增删操作
  6. // console.log(arr.push(5));
  7. // console.log(arr.pop());
  8. // 队 unshift() shift() 在数组的头部进行增删
  9. // console.log(arr);
  10. // console.log(arr.unshift(1, 2, 3, 4));
  11. // console.log(arr.unshift(10));
  12. // console.log(arr);
  13. // console.log(arr.shift());
  14. // console.log(arr.shift());
  15. // push()+shift(): 模拟队列, 尾部进入,头部出去
  16. // console.log(arr);
  17. // console.log(arr.push(1, 2, 3));
  18. // console.log(arr);
  19. // console.log(arr.shift());
  20. // console.log(arr.shift());
  21. // console.log(arr.shift());
  22. // pop()+unshift(): 模拟队列, 头部进入,尾部出去
  23. // console.log(arr);
  24. // console.log(arr.unshift(1, 2, 3));
  25. // console.log(arr);
  26. // console.log(arr.pop());
  27. // console.log(arr.pop());
  28. // console.log(arr.pop());
  29. // 2。join() :与字符串的split()相反,它能将数组转为字符串。
  30. // arr = ["道德经", "论语", "庄子"];
  31. // let res = arr.join("/")
  32. // console.log(res);
  33. // 在js中字符串就是数组
  34. // let str = "hello";
  35. // console.log(str[0], str[1], str[2], str[3], str[4]);
  36. // 3.concat()数组合并
  37. // console.log("hello".concat("word"));
  38. // 也可以合并其他元素
  39. // console.log([1, 2, 3].concat(123, ["php", true], { x: 1, y: 2 }));
  40. // 4. slice(): 返回数组中的部分成员(也可以用来创造一个数组的副本)
  41. // arr = [1, 2, 3, 4, 5];
  42. // let arr1 = arr;
  43. // console.log((arr1[1] = 800));
  44. // console.log(arr);
  45. // 创建数组副本
  46. // res = arr.slice(0);
  47. // console.log(res);
  48. // res[1] = 888;
  49. // console.log(arr);
  50. // console.log(res);
  51. // 取最后二个
  52. // console.log(arr.slice(3));
  53. // console.log(arr.slice(-2));
  54. // 5. splice(开始索引,删除的数量,插入的数据...): 数组的增删改,它的本职工作是删除元素
  55. arr = [1, 2, 3, 4, 5];
  56. // 5.1 删除
  57. res = arr.splice(2);
  58. // 返回被删除的元素
  59. // console.log(res);
  60. // 当前数组中仅有1,2
  61. // console.log(arr);
  62. // 5.2 更新
  63. arr = [1, 2, 3, 4, 5];
  64. // 最好传入单值
  65. res = arr.splice(1, 2, ...[88, 99]);
  66. // console.log(res);
  67. // console.log(arr);
  68. // 5.3 新增
  69. arr = [1, 2, 3, 4, 5];
  70. // 将第二个参数设置为0,这样就不会有元素被删除
  71. res = arr.splice(1, 0, ...[88, 99]);
  72. // console.log(res);
  73. // console.log(arr);
  74. // 6. sort() 排序
  75. arr = ["p", "b", "a"];
  76. console.log(arr);
  77. // 默认按字母表顺序
  78. arr.sort();
  79. console.log(arr);
  80. arr = [10, 9, 22, 4];
  81. console.log(arr);
  82. // arr.sort();
  83. arr.sort((a, b) => a - b);
  84. console.log(arr);
  85. // 7. 遍历
  86. arr = [1, 2, 3, 4, 5];
  87. // 没有返回值
  88. arr.forEach(item => console.log(item));
  89. console.log(res);
  90. // map对数组每个成员都调用回调进行处理并返回这个数组
  91. res = arr.map(item => item * 2);
  92. console.log(res);
  93. // 8. 过滤
  94. arr = [1, 2, 3, 4, 5];
  95. // 奇数取反
  96. res = arr.filter(item => !(item % 2));
  97. console.log(res);
  98. // 9. 归内
  99. // reduce(callback(prev,curr))
  100. arr = [1, 2, 3, 4, 5];
  101. res = arr.reduce((prev, curr) => {
  102. // console.log(prev, curr);
  103. return prev + curr;
  104. });
  105. // 简写
  106. res = arr.reduce((prev, curr) => prev + curr);
  107. // 第二个参数是累加的初始值,字符串从空字符串开始
  108. res = arr.reduce((prev, curr) => prev + curr, 5000);
  109. console.log(res);

JSON的stringify(),parse()

  1. <script>
  2. // 1.JSON.stringify(data,replacer,space):讲js数据转为json
  3. // 在json中都是字符串
  4. console.log(JSON.stringify(3.55), typeof JSON.stringify(3.55));
  5. console.log(JSON.stringify("php.cn"), typeof JSON.stringify("php.cn"));
  6. // 以下不加双引号
  7. console.log(JSON.stringify(true), typeof JSON.stringify(true));
  8. console.log(JSON.stringify(null), typeof JSON.stringify(null));
  9. // array, object (数组,对象)
  10. // json对象的属性必须加双引号,字符串也必须加双引号
  11. console.log(
  12. JSON.stringify({ x: "a", y: "b" }),
  13. typeof JSON.stringify({ x: "a", y: "b" })
  14. );
  15. console.log(JSON.stringify([1, 2, 3]), typeof JSON.stringify([1, 2, 3]));
  16. // json其实不是数据类型,只是一个具有特殊格式的字符串而已
  17. // 会对json格式字符串的特殊操作,主要通过后面二个参数
  18. // 第二个参数支持数组 和 函数
  19. // 数组
  20. console.log(JSON.stringify({ a: 1, b: 2, c: 3 }));
  21. console.log(JSON.stringify({ a: 1, b: 2, c: 3 }, ["a", "b"]));
  22. // 函数
  23. console.log(
  24. JSON.stringify({ a: 1, b: 2, c: 3 }, (k, v) => {
  25. // 将需要过滤掉的数据直接返回undefined(json不支持undefined)
  26. if (v < 2) return undefined;
  27. return v;
  28. })
  29. );
  30. // 第三个参数,用来格式化输出的json字符串
  31. console.log(JSON.stringify({ a: 1, b: 2, c: 3 }, null, 2));
  32. console.log(JSON.stringify({ a: 1, b: 2, c: 3 }, null, "****"));
  33. // 2. JSON.parse(str,reviver),将json转为js对象
  34. let obj = JSON.parse(`{"a":1,"b":2,"c":3}`);
  35. console.log(obj, typeof obj);
  36. console.log(obj.a, obj.b, obj.c);
  37. // 第二个参数可以对json的数据进行处理后再返回
  38. obj = JSON.parse(`{"a":1,"b":2,"c":3}`, (k, v) => {
  39. // json对象是由内向外解析
  40. if (k === "") return v;
  41. return v * 2;
  42. });
  43. console.log(obj);
  44. </script>

ajax

  • get请求

    1. <button>ajax-get</button>
    2. <p></p>
    3. <script>
    4. const bth = document.querySelector("button");
    5. bth.onclick = () => {
    6. // 1. 创建 xhr 对象
    7. const xhr = new XMLHttpRequest();
    8. // 2. 配置 xhr 参数
    9. xhr.open("get", "test1.php?id=1");
    10. xhr.responseType = "json";
    11. // 3. 处理 xhr 响应
    12. // 成功
    13. xhr.onload = () => {
    14. console.log(xhr.response);
    15. // dom:将响应结果渲染到页面
    16. let user = `${xhr.response.name} ( ${xhr.response.email} )`;
    17. document.querySelector("p").innerHTML = user;
    18. };
    19. xhr.onerror = () => console.log("Error");
    20. // 4. 发送 xhr 请求:
    21. xhr.send(null);
    22. }
    23. </script>
  • post请求

    1. <script>
    2. // 拿到数据
    3. const form = document.querySelector(".login form");
    4. const btn = document.querySelector(".login button");
    5. const tips = document.querySelector(".tips");
    6. // 通过FormData() 拿数据
    7. // let data = new FormData();
    8. // data.append("email", form.email.value);
    9. // data.append("password", form.password.value);
    10. // console.log(data.get("email"), data.get("password"));
    11. btn.onclick = ev => {
    12. ev.preventDefault();
    13. // 1。 创建 xhr 对象:
    14. const xhr = new XMLHttpRequest();
    15. // 2。 配置 xhr 参数:
    16. xhr.open("post", "test2.php");
    17. // 3。 处理 xhr 响应:
    18. xhr.onload = () => (tips.innerHTML = xhr.response)
    19. // 4。 发送 xhr 请求:
    20. xhr.send(new FormData(form))
    21. }
    22. </script>

cors跨域

它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

  • get

js

  1. <body>
  2. <button>ajax-post-cors</button>
  3. <p class="tips"></p>
  4. <script>
  5. const btn = document.querySelector("button");
  6. const tips = document.querySelector(".tips");
  7. btn.onclick = ev => {
  8. // 1. 创建 xhr 对象:
  9. const xhr = new XMLHttpRequest();
  10. // 2. 配置 xhr 参数:
  11. xhr.open("post", "http://world.io/cors2.php");
  12. // 3. 处理 xhr 响应:
  13. xhr.onload = () => (tips.innerHTML = xhr.response);
  14. // 4. 发送 xhr 请求:
  15. let formData = new FormData();
  16. formData.append("email", "admin@php.cn");
  17. formData.append("password", "123456");
  18. xhr.send(formData);
  19. };
  20. </script>

php

  1. <?php
  2. // 在服务器端开启跨域许可。 *: 代表任何来源
  3. // header('Access-Control-Allow-Origin: http://hello.io');
  4. header('Access-Control-Allow-Origin: *');
  5. echo 'CORS: 跨域请求成功';
  • post

js

  1. const btn = document.querySelector("button");
  2. const tips = document.querySelector(".tips");
  3. btn.onclick = ev => {
  4. // 1. 创建 xhr 对象:
  5. const xhr = new XMLHttpRequest();
  6. // 2. 配置 xhr 参数:
  7. xhr.open("post", "http://world.io/cors2.php");
  8. // 3. 处理 xhr 响应:
  9. xhr.onload = () => (tips.innerHTML = xhr.response);
  10. // 4. 发送 xhr 请求:
  11. let formData = new FormData();
  12. formData.append("email", "admin@php.cn");
  13. formData.append("password", "123456");
  14. xhr.send(formData);
  15. };

php

  1. <?php
  2. header('Access-Control-Allow-Origin: *');
  3. // 返回前端post提交的数据
  4. print_r($_POST);
  • jsonp

js

  1. function getUser(data) {
  2. console.log(data);
  3. let user = data.name + ": " + data.email;
  4. document.querySelector("p").innerHTML = user;
  5. }
  6. const btn = document.querySelector("button");
  7. btn.onclick = () => {
  8. // 1. 动态生成一个允许跨域请求的html元素
  9. let script = document.createElement("script");
  10. // 2. 将跨域请求的url添加到src属性上
  11. script.src = "http://world.io/cors3.php?callback=getUser";
  12. // 3. 将script挂载到页面中
  13. document.body.insertBefore(script, document.body.firstElementChild);
  14. };

php

  1. <?php
  2. // jsonp 不需要授权给前端
  3. // 只要返回一个使用json做为参数的函数调用语句就可以
  4. // 将前端需要的数据以json格式放到这个函数的参数中就行了
  5. // 必须要知道前端js要调用 的函数名称
  6. $callback = $_GET['callback'];
  7. // 服务器中需要返回的数据
  8. $data = '{ "name": "天蓬", "email": "tp@php.cn" }';
  9. $data = '{ "name": "灭绝", "email": "mj@php.cn" }';
  10. // 在后端生成一条js函数调用语句: getUser({ name: "天蓬老师", email: "tp@php.cn" });
  11. echo $callback . '(' .$data. ')';
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议