博客列表 >使用jquery中的DOM操作实现留言板、演示$.get、$post与$.ajax再实现一遍;并用$.ajax实现jsonp中跨域请求

使用jquery中的DOM操作实现留言板、演示$.get、$post与$.ajax再实现一遍;并用$.ajax实现jsonp中跨域请求

lus菜
lus菜原创
2021年01月16日 17:31:06662浏览

留言板:

样式代码:

  1. <body>
  2. <h2>留言板:</h2>
  3. <!-- 引入jQyery库 -->
  4. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  5. <!-- jQuery中的dom操作,实现前面写的留言本 -->
  6. <label><input type="text" id="lyb" /></label>
  7. <ol class="list"></ol>
  8. <script>
  9. //留言板添加数据
  10. $("#lyb").on("keydown", function (ev) {
  11. // 非空回车判断
  12. if ($(this).val().length > 0) {
  13. if (ev.key == "Enter") {
  14. let lyb = `<li>${$(
  15. this
  16. ).val()} [<a href="javascript:;" onclick="$(this).parent().remove();">删除</a>]</li>`;
  17. // 添加新的留言在前面
  18. $("ol.list").prepend(lyb);
  19. // 清空上一条留言
  20. $(this).val(null);
  21. }
  22. }
  23. });
  24. </script>
  25. </body>

效果预览:

演示$.get、$.post:

样式代码:

  1. <body style="display: grid; gap: 2em; padding: 2em">
  2. <button class="get">1. $.get(): 请求数据</button>
  3. <button class="post">2. $.post(): 请求数据</button>
  4. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
  5. <script>
  6. // 1. $.get(请求url,查询参数,成功回调)
  7. $(".get").click(function (ev) {
  8. // $.get("users.php?id=1", function (data) {
  9. $.get("users.php", { id: 2 }, function (data) {
  10. // console.log(data);
  11. // console.log(ev.target);
  12. $(ev.target).after("<div></div>").next().html(data);
  13. });
  14. });
  15. // 2. post()
  16. $(".post").click(function (ev) {
  17. $.post("users.php", { id: 3 }, function (data) {
  18. console.log(data);
  19. $(ev.target).after("<div></div>").next().html(data);
  20. });
  21. });
  22. </script>
  23. </body>

php代码:

  1. <?php
  2. // 二维数组来模拟数据表的查询结果
  3. $users = [
  4. ['id' => 1, 'name' => '老头子', 'age' => 66],
  5. ['id' => 2, 'name' => '小菇凉', 'age' => 18],
  6. ['id' => 3, 'name' => '小伙子', 'age' => 20],
  7. ];
  8. // $_REQUEST: 相当于 $_GET + $_POST + $_COOKIE 三合一
  9. if (in_array($_REQUEST['id'], array_column($users, 'id'))) {
  10. foreach ($users as $user) {
  11. if ($user['id'] == $_REQUEST['id']) {
  12. // vprintf(输出模板, 数组表示的参数)
  13. vprintf('%s: %s %s岁',$user);
  14. // 以下语句配合$.getJSON()调用,其它请求时请注释掉
  15. // echo json_encode($user);
  16. }
  17. }
  18. } else {
  19. die('<span style="color:red">没找到</span>');
  20. }

效果预览:

$ajax实现jsonp中跨域请求:

  1. <body style="display: grid; gap: 2em; padding: 2em">
  2. <button class="jsonp">3. $.ajax():JSONP: 跨域请求数据</button>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
  4. <script>
  5. $(".jsonp").click(function (ev) {
  6. $.ajax({
  7. type: "get",
  8. url: "http://world.io/test.php?id=2&jsonp=?",
  9. dataType: "jsonp",
  10. // 告诉跨域访问的服务器需要返回的函数名称
  11. // jsonpCallback: "show",
  12. success: function (data) {
  13. console.log(data);
  14. $("button:last-of-type")
  15. .after("<div>")
  16. .next()
  17. .html(`${data.name} [${data.email}]`);
  18. },
  19. });
  20. });
  21. </script>
  22. </body>

php代码:

  1. <?php
  2. header('content-type:text/html;charset=utf-8');
  3. // 获取回调名称
  4. $callback = $_GET['jsonp'];
  5. $id = $_GET['id'];
  6. // 模拟接口数据
  7. $users = [
  8. 0=>'{"name":"朱老师", "email":"peter@php.cn"}',
  9. 1=>'{"name":"西门老师", "email":"xm@php.cn"}',
  10. 2=>'{"name":"猪哥", "email":"pig@php.cn"}'
  11. ];
  12. if (array_key_exists(($id-1), $users)) {
  13. $user = $users[$id-1];
  14. }
  15. // echo $user;
  16. // 动态生成handle()的调用
  17. echo $callback . '(' . $user . ')';

效果预览:

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