博客列表 >基于jquery的小记事本,及$.get/$.post/$.ajax跨域请求的简单实现

基于jquery的小记事本,及$.get/$.post/$.ajax跨域请求的简单实现

我是贝壳
我是贝壳原创
2021年01月26日 11:00:50703浏览

1 基于jquery的小型记事本

最简单的html页面结构

  1. <div class="textbook">
  2. <label for="">请留言:</label>
  3. <input type="text" class="newMessage" id="" />
  4. <ol class="oldMessage">
  5. </ol>
  6. </div>

实现逻辑为:

  • 用户在文本框内输入留言内容,按回车键:
  • 留言将会自动添加到下面的留言列表中最先位置。
  • 清空文本框的内容

具体实现:

  1. // 1 添加新留言(以回车键触发)
  2. $(".newMessage").keydown(function (e){
  3. //判断输出是否结束,即按下的键是不是回车键,是则代表输入结束
  4. if(e.key == "Enter"){
  5. //验证输入内容是否为空,是则给出弹窗提示,
  6. if($("newMessage).val() == ""){
  7. alert("留言不能为空");
  8. }else {
  9. //留言不为空,则将留言写入预留的ol列表中
  10. let new = `<li>${$(".newMessage").val()}</li>`;
  11. //prepend()添加为第一个子元素,append()添加为最后一个子元素
  12. $("ol").prepend(new);
  13. }
  14. }
  15. });
  16. //2 删除旧留言(以点击触发)
  17. $("ol").click(function(e){
  18. $(e.target).remove();
  19. });

2 $.get/$.post/$.ajax跨域请求的简单实现

公共代码

  1. //触发get数据请求
  2. <button class="get">$.get()请求数据</button>
  3. //触发post请求
  4. <button class="post">$.post()请求数据</button>
  5. //触发ajax的跨域数据请求
  6. <button class="jsonp">$.ajax():JSONP:跨域请求数据</button>
  7. //引入jquery库
  8. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>

2.1 $.get()

$.get((请求url,查询参数,成功回调)
前端请求html与后面处理php在同一个服务器的同一个目录下

前端html:

  1. //设置按钮触发
  2. $(".get").click(function( ev ){
  3. //因为是get方式请求数据,也可以写成:
  4. //$.get("test3.php?id=2",function(data){});
  5. $.get("test3.php",{id:2},function(data){
  6. $(ev.target).after("<div></div").next().html(data);
  7. });
  8. });

后端php:

  1. <?php
  2. $users = [
  3. ['id' => 1, 'name' => '天蓬大人', 'age' => 66],
  4. ['id' => 2, 'name' => '灭绝师妹', 'age' => 55],
  5. ['id' => 3, 'name' => '西门老妖', 'age' => 44],
  6. ];
  7. // $_REQUEST相当于$_GET + $_POST + $_COOKIE 三合一
  8. if (in_array($_REQUEST['id'], array_column($users, 'id'))){
  9. foreach ($users as $user) {
  10. if ($user['id'] == $_REQUEST['id']) {
  11. // vprintf(输出模板, 数组表示的参数)
  12. vprintf('%s: %s %s岁',$user);
  13. }
  14. }
  15. } else {
  16. die('<span style="color:red">没找到</span>');
  17. }

运行结果:点击get按钮,页面显示:
2: 灭绝师妹 55岁

2.2 $.post()

$.post((请求url,查询参数,成功回调)
前端请求html与后面处理php在同一个服务器的同一个目录下,写法与$.get()一致

  1. //设置按钮触发
  2. $(".post").click(function( ev ){
  3. $.post("test3.php",{id:3},function(data){
  4. $(ev.target).after("<div></div").next().html(data);
  5. });
  6. });

后端代码与2.1$.get()的后端代码保持一致
运行结果:点击post按钮,页面显示:
3: 西门老妖 44岁

2.3 $.ajax()跨域数据请求

建立两个服务器,前端服务器hello访问后端world服务器的php脚本

后端world上的脚本代码:

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

前端hello的按钮处理script脚本:

  1. //$.ajax({
  2. // type:'post',
  3. // url:'users.php',
  4. // data: {id:2},
  5. // dataType: 'html',
  6. // success: function (){}
  7. //})
  8. $(".ajax").click(function(ev){
  9. $.ajax(
  10. type:'get',
  11. url:'http://world:8012/test3.php?id=2&jsonp=?",
  12. //data:{id:2},上面是get方式,已经在url中传递数据
  13. datatype:"jsonp",
  14. success:function(data){
  15. $("ajax").after("div").next().html(`${data.name} [${data.email}}]`);
  16. },
  17. );
  18. });

运行结果:点击ajax按钮,页面显示:
2: 灭绝师妹 55岁

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