• 【jquery Ajax 】form表单教学+评论案例


        

    ✍️ 作者简介: 前端新手学习中。
    💂 作者主页: 作者主页查看更多前端教学
    🎓 专栏分享:css重难点教学       Node.js教学 从头开始学习

    目录

    form表单的基本使用

            什么是表单

            表单的组成部分

             

    标签的属性

                     action

                    target

                     method

            表单的同步提交以及缺点

                    什么是表单的同步提交

                    表单提交的缺点

    通过Ajax提交表单数据

            监听表单提交事件

            快速获取表单中的数据

                    serialize()函数

    案例——评论列表

            渲染UI结构

             获取评论数据

                    文档

    请求的根路径

    评论列表

                    代码 

               将获取到的初始数据显示在页面上

                            代码

             发表评论

                   文档

    发表评论

                    修改html表单

                    代码


    form表单的基本使用

            什么是表单

    表单在网页中主要负责数据采集功能,HTML中的

    标签,就是用于采集用户输入的信息,并通过标签的提交操作,把采集到的信息提交到服务器端进行处理。

            表单的组成部分

    三个基本组成部分

    • 表单标签
    • 表单域
    • 表单按钮

    ​ 

             标签的属性

    标签用来采集数据,标签的属性则是用来规定如何把采集到的数据发送到服务器。

                     action

    action属性用来规定当提交表单时,向何处发送表单数据。

    action属性的值应该是后端提供的一个url地址,这个url地址专门负责接受表单提交过来的数据。

    当表单未指定action属性值的情况下,action的默认值为当前页面的URL地址。

    当表单提交后,页面会跳转到action属性指向的地址。

                    target

    target属性用来规定在何处打开 action 的url

    它的可选值有五个,默认情况下,target的值是_self,表示在相同的框架中打开action URL。

                     method

    method属性用来规定以何种方式把表单数据提交到action URL。

    它的可选值有两个,分别是get和post。

    默认的情况下,method的值为get,表示通过URL地址的形式,把表单数据提交到action URL

     注意:get方式适合用来提交少量的,简单的数据。

     post方式适合用来提交大量的,复杂的,或包含文件上传的数据。

     在实际开发中,表单的post提交方式用的最多,很少用get,例如登录,注册,添加数据等表单操作,都需要使用post方式来提交表单。

            表单的同步提交以及缺点

                    什么是表单的同步提交

    通过点击submit按钮,触发表单提交的操作,从而使页面跳转到action URL的行为,叫做表单的同步提交。

                    表单提交的缺点

    1. 表单同步提交后,整个页面会发生跳转,跳转到action URL所指向的地址,用户体验很差。
    2. 表单同步提交后,页面之前的状态和数据会丢失。

    如何解决表单同步提交的缺点

    表单只负责采集数据,Ajax负责将数据提交到服务器。

    通过Ajax提交表单数据

            监听表单提交事件

    1. <form action="/login" method="get" id="f1">
    2. <input type="text" name="user_name">
    3. <input type="password" name="password">
    4. <button type="submit">提交button>
    5. form>
    6. <script>
    7. $(function () {
    8. $('#f1').submit(function (e) {
    9. //阻止默认的跳转
    10. e.preventDefault();
    11. })
    12. })
    13. script>
    14. body>

            快速获取表单中的数据

                    serialize()函数

         为了简化表单中数据的获取操作,jquery提供了serialize()函数,可以一次性获取表单中所有的数据。

    1. "/login" method="get" id="f1">

             发表评论

                   文档

    发表评论

    • 接口URL: /api/addcmt
    • 调用方式: POST
    • 参数格式:
    参数名称参数类型是否必选参数说明
    usernameString评论人名称
    contentString评论内容
    • 响应格式:
    数据名称数据类型说明
    statusNumber201 发表评论成功;500 请填写完整的评论信息; 501 执行Sql失败;
    msgString对 status 字段的详细说明

                    修改html表单

    1. <div class="panel-body">
    2. <div>评论人div>
    3. <input type="text" class="form-control">
    4. <div>评论内容div>
    5. <textarea class="form-control">textarea>
    6. <button type="submit" class="btn-primary btn">发表评论button>
    7. div>
    8. //外层div换成form表单
    9. //发表评论我们需要获取评论人和评论内容所以我们可以给他添加一个 name属性
    10. //name属性 要与文档接口 对应
    11. <form class="panel-body" id="formAddCmt">
    12. <div>评论人div>
    13. <input type="text" class="form-control" name="username">
    14. <div>评论内容div>
    15. <textarea class="form-control">
    16. <button type="submit" class="btn-primary btn">发表评论button>
    17. form>

                    代码

    1. $('#formAddCmt').submit(function (e) {
    2. e.preventDefault();
    3. //decodeURIComponent 解码
    4. var data = decodeURIComponent($(this).serialize())
    5. console.log(data);
    6. $.ajax({
    7. type: 'post',
    8. url: 'http://www.liulongbin.top:3006/api/addcmt',
    9. data: data
    10. ,
    11. success:
    12. function (res) {
    13. console.log(res);
    14. if (res.status !== 201)
    15. return alert('评论发布失败');
    16. getCommenlist()
    17. //转换成dom对象使用reset()方法重置内容
    18. $('#formAddCmt')[0].reset();
    19. }
    20. })
    21. })

  • 相关阅读:
    工程内分子目录存放源代码的处理(linux cmake)
    百战c++(数据库1)
    Docker | redis安装及测试
    长连接和短连接
    基于HLS的人脸肤色检测IP核设计研究
    华1-安装配置CentOS
    人工智能与神经网络-激活函数
    [ROS笔记本]QT5问题cmake编译
    《论文解读》THE CURIOUS CASE OF NEURAL TEXT DeGENERATION
    nodejs+vue+elementui网上书城 图书销售商城网站express
  • 原文地址:https://blog.csdn.net/m0_62360527/article/details/127649836