Blogger Information
Blog 13
fans 0
comment 0
visits 9220
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
基于jquery的小记事本,及$.get/$.post/$.ajax跨域请求的简单实现
我是贝壳
Original
702 people have browsed it

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岁

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