$.get,$.post,$ajax与Vue基本术语

  1. $.get,$.post,$ajaxVue基本术语
  2. 20210418 22:12:25阅读数:97博客 / 千山暮雪/ 作业
  3. 1. jQuery常用dom操作
  4. before 在被选元素之前插入兄弟ele
  5. after 在被选元素之后插入兄弟ele
  6. insertAfter ele插入到被选元素后面 ,同级
  7. insertBefore ele插入到被选元素前面,同级
  8. append 在被选元素的结尾插入子ele 父.append(子)
  9. appendTo 把子ele插入父ele结尾 子.appendTo(父)
  10. prepend 在被选元素的开头插入子ele 父.prepend(子)
  11. prependTo 把子ele插入父ele开头 子.prependTo(父)
  12. <body>
  13. <div class=".container">
  14. <div id="item1">item1</div>
  15. <div id="item2">item2</div>
  16. <div id="item3">item3</div>
  17. <div id="item4">item4</div>
  18. <div id="item5">item5</div>
  19. </div>
  20. <script>
  21. // before 在被选元素之前插入兄弟ele
  22. $('#item3').before('<div style="color: red">before item3</div>');
  23. // after 在被选元素之后插入兄弟ele
  24. $('#item3').after('<div style="color: green">after item3</div>');
  25. // insertAfter ele插入到被选元素后面 ,同级
  26. $('<div>insertAfter item1</div>').insertAfter('#item1');
  27. // insertBefore ele插入到被选元素前面,同级
  28. $('<div>insertBefore item1</div>').insertBefore('#item1');
  29. // append 在被选元素的结尾插入子ele 父.append(子)
  30. $('#item2').append('<div>append item2</div>');
  31. //appendTo 把子ele插入父ele结尾 子.appendTo(父)
  32. $('<div>appendTo item2</div>').appendTo('#item2');
  33. // prepend 在被选元素的开头插入子ele 父.prepend(子)
  34. $('#item5').prepend('<div>prepend item5</div>');
  35. // prependTo 把子ele插入父ele开头 子.prependTo(父)
  36. $('<div>prependTo item5</div>').prependTo('#item5');
  37. </script>
  38. empty 清空指定节点的所有元素,自身保留(清理门户)
  39. remove 相比于empty,自身也删除(自杀)
  40. replaceWith 用指定的 HTML 内容或元素替换被选元素, 原元素上操作
  41. replaceAll 用指定的 HTML 内容或元素替换被选元素, 新元素上操作
  42. clone() 克隆元素本身及后代
  43. clone(true) 克隆元素本身及后代以及绑定的事件
  44. <body>
  45. <div class=".container">
  46. <div id="item1" style="background-color: darkkhaki; min-height: 1rem;">
  47. item1
  48. <div>item1子节1</div>
  49. <div>item1子节2</div>
  50. </div>
  51. <div id="item2" style="background-color: greenyellow; min-height: 1rem;">item2
  52. <div>item2子节1</div>
  53. <div>item2子节2</div>
  54. </div>
  55. <div id="item3">item3</div>
  56. <div id="item4">item4</div>
  57. <div id="item5">item5</div>
  58. </div>
  59. <script>
  60. // empty:清空指定节点的所有元素,自身保留(清理门户)
  61. $('#item1').empty();
  62. // remove:相比于empty,自身也删除(自杀)
  63. $('#item2').remove();
  64. // replaceWith 用指定的 HTML 内容或元素替换被选元素, 原元素上操作
  65. $('#item3').replaceWith('<h4>hello replacewith</h4>');
  66. // replaceAll 用指定的 HTML 内容或元素替换被选元素, 新元素上操作
  67. $('<h4>hello replaceAll</h4>').replaceAll('#item4');
  68. // 如果 替换的元素已存在, 那就是移动操作
  69. // $(selector).clone();//克隆元素本身及后代
  70. // $(selector).clone(true);//克隆元素本身及后代以及绑定的事件
  71. $('#item5').clone().appendTo('#item1');
  72. </script>
  73. </body>
  74. on 注册事件
  75. on注册简单事件,对未来元素不生效
  76. // 表示给$(selector)绑定事件,并且由自己触发,不支持动态绑定。
  77. $(selector).on( click’, function() {});
  78. on注册事件委托,对末来元素生效
  79. // 表示给$(selector)绑定代理事件,当必须是它的内部元素span才能触发这个事件,支持动态绑定
  80. $(selector).on( click’,’span’, function() {});
  81. on注册事件的语法:
  82. // 第一个参数:events,绑定事件的名称可以是由空格分隔的多个事件(标准事件或者自定义事件)
  83. // 第二个参数:selector, 执行事件的后代元素(可选),如果没有后代元素,那么事件将由自己执行。
  84. // 第三个参数:data,传递给处理函数的数据,事件触发的时候通过event.data来使用(不常使用)
  85. // 第四个参数:handler,事件处理函数
  86. $(selector).on(events[,selector][,data],handler);
  87. <body>
  88. <ul>
  89. <li>item1</li>
  90. <li>item2</li>
  91. <li>item3</li>
  92. <li>item4</li>
  93. </ul>
  94. <script>
  95. let colors = ['red', 'yellow', 'blue', 'green', 'orange']
  96. // 在ul元素自身点击事件
  97. $('ul').on('click', function () {
  98. let ranClr = Math.floor(Math.random() * colors.length);
  99. $(this).css('background-color', colors[ranClr]);
  100. });
  101. // 在ul的子元素li点击事件
  102. $('ul').on('click', 'li', function () {
  103. let ranClr = Math.floor(Math.random() * colors.length);
  104. $(this).css('background-color', colors[ranClr]);
  105. });
  106. // 可以改写为箭头函数
  107. $('ul').on('click', (item) => {
  108. let ranClr = Math.floor(Math.random() * colors.length);
  109. $(item.target).css('background-color', colors[ranClr]);
  110. });
  111. </script>
  112. </body>
  113. 2. jQuery中的$.ajax方法
  114. 前端
  115. <body style="display: grid; gap: 1em; place-items: start">
  116. <button class="get">1. $.get(): 请求数据</button>
  117. <button class="post">2. $.post(): 请求数据</button>
  118. <button class="jsonp">3. $.ajax():JSONP: 跨域请求数据</button>
  119. <script>
  120. // $.get
  121. $('.get').on('click', () => {
  122. $.get('test1.php', { id: 2 }, (res) => {
  123. let data = JSON.parse(res)
  124. console.log(`name: ${data.name}, email: ${data.email}`);
  125. })
  126. });
  127. // $.post
  128. $('.post').on('click', () => {
  129. $.post('test2.php', { email: 'ls@qq.com', pwd: '123456' }, (res) => {
  130. console.log(res);
  131. })
  132. })
  133. // $.ajax
  134. $('.jsonp').on('click', (ev) => {
  135. let user = { id: 2 };
  136. $.ajax({
  137. type: "POST",
  138. url: 'http://world.site/test2.php',
  139. dataType: "jsonp",
  140. data: user,
  141. jsonp: 'callback',
  142. success: (res) => {
  143. console.log(res);
  144. }
  145. })
  146. })
  147. </script>
  148. </body>
  149. $.get后端
  150. <?php
  151. $users= [
  152. ['id'=>1,'name'=>'张三','email'=>'zs@qq.com','pwd'=>'123456'],
  153. ['id'=>2,'name'=>'李四','email'=>'ls@qq.com','pwd'=>'123456'],
  154. ['id'=>3,'name'=>'王五','email'=>'ww@qq.com','pwd'=>'123456'],
  155. ];
  156. $id = $_GET['id'];
  157. $key = array_search($id,array_column($users,'id'));
  158. // 将结果做为请求响应返回到前端
  159. echo json_encode($users[$key]);
  160. $.post后端
  161. <?php
  162. $users= [
  163. ['id'=>1,'name'=>'张三','email'=>'zs@qq.com','pwd'=>'123456'],
  164. ['id'=>2,'name'=>'李四','email'=>'ls@qq.com','pwd'=>'123456'],
  165. ['id'=>3,'name'=>'王五','email'=>'ww@qq.com','pwd'=>'123456'],
  166. ];
  167. $email = $_POST['email'];
  168. $pwd = $_POST['pwd'];
  169. $res = array_filter($users, function ($user) use ($email, $pwd) {
  170. return $user['email'] === $email && $user['pwd'] === $pwd;
  171. });
  172. // 将结果做为请求响应返回到前端
  173. echo count($res) === 1 ? '验证成功' : '验证失败';
  174. $.ajax后端
  175. <?php
  176. header('content-type:text/html;charset=utf-8');
  177. // 获取回调名称
  178. $callback = $_GET['callback'];
  179. $id = $_GET['id'];
  180. // 模拟接口数据
  181. $users = [
  182. 0 => '{"name":"朱老师", "email":"peter@php.cn"}',
  183. 1 => '{"name":"西门老师", "email":"xm@php.cn"}',
  184. 2 => '{"name":"猪哥", "email":"pig@php.cn"}'
  185. ];
  186. if (array_key_exists(($id - 1), $users)) {
  187. $user = $users[$id - 1];
  188. }
  189. // echo $user;
  190. // 动态生成handle()的调用
  191. echo $callback . '(' . $user . ')';
  192. 3. Vue基本术语与插值语法
  193. Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。
  194. 挂载点:Vue不再和 HTML 直接交互, 一个 Vue 应用会将其挂载到一个 DOM 元素上,然后对其进行完全控制。那个 HTML 是我们的入口,挂载点.
  195. 数据注入/绑定:数据与Vue实例绑定,
  196. 响应式:数据和 DOM 建立了关联,数据值变动DOM中会更新
  197. 插值语法:Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统,语法为双花括号{{}}
  198. <body>
  199. <div class="root">
  200. <!-- 通过插值语法,绑定数据 -->
  201. <p>用户名1:{{uname1}}</p>
  202. <p>用户1邮箱:<span v-text="uemail1"></span></p>
  203. <hr>
  204. <!-- 通过v-text指定写入文本 -->
  205. <p>用户名2:<span v-text="uname2"></span></p>
  206. <!-- v-once中的数据只能渲染一次 -->
  207. <p>用户名2:<span v-once="uname2"></span></p>
  208. <p>用户2邮箱:<span v-text='uemail2'></span></p>
  209. <!-- v-html指定写入html文本 -->
  210. <p v-html="btn"></p>
  211. </div>
  212. <script>
  213. const ve = new Vue({ //new 创建Vue实例
  214. el: '.root', // 挂载点, 支持css筛选器语法, 等同document.querySelector
  215. data() {
  216. return {
  217. uname1: '张三',
  218. uemail1: 'zs@qq.com',
  219. uname2: '李四',
  220. uemail2: 'ls@php.cn',
  221. btn: '<Button type="button">保存</Button>'
  222. }
  223. },
  224. });
  225. // 响应式, 修改数据会同步显示更新
  226. ve.uemail2 = 'LS@chinaren.com';
  227. </script>
  228. </body>