Blogger Information
Blog 29
fans 0
comment 0
visits 19784
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
数组函数、json、ajax、cors跨域
手机用户1576673622
Original
504 people have browsed it

数组函数

  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. ')';
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post