• Ajax--form表单与模板引擎--通过Ajax提交表单数据及案例 - 评论列表


    监听表单提交事件

    jQuery 中,可以使用如下两种方式,监听到表单的提交事件:

    1. $('#form1').submit(function(e) {
    2. alert('监听到了表单的提交事件')
    3. })
    4. $('#form1').on('submit', function(e) {
    5. alert('监听到了表单的提交事件')
    6. })

      阻止表单默认提交行为

    就是点击表单之后,会默认跳转action对应的url 

    当监听到表单的提交事件以后,可以调用事件对象的 event.preventDefault() 函数,来阻止表单的提交和页面的跳转,示例代码如下:

    1. $('#form1').submit(function(e) {
    2. // 阻止表单的提交和页面的跳转
    3. e.preventDefault()
    4. })
    5. $('#form1').on('submit', function(e) {
    6. // 阻止表单的提交和页面的跳转
    7. e.preventDefault()
    8. })

     快速获取表单中的数据

    1. serialize()函数

    为了简化表单中数据的获取操作,jQuery 提供了 serialize() 函数,其语法格式如下:

    $(selector).serialize()
    

    serialize() 函数的好处:可以一次性获取到表单中的所有的数据

    2. serialize()函数示例

    1. <form id="form1">
    2. <input type="text" name="username" />
    3. <input type="password" name="password" />
    4. <button type="submit">提交</button>
    5. </form>
    1. $('#form1').serialize()
    2. // 调用的结果:
    3. // username=用户名的值&password=密码的值

    注意:在使用 serialize() 函数快速获取表单数据时,必须为每个表单元素添加 name 属性

    案例 - 评论列表

     

    为什么会是反的,这是因为浮动的原因 

     外观搭建 

     获取评论列表

    1. function getCmtList() {
    2. $.get('http://www.liulongbin.top:3006/api/cmtlist', function (res) {
    3. if(res.status !== 200) {
    4. return alert('获取评论列表失败!')
    5. }
    6. var rows = []
    7. $.each(res.data, function (i, item) { // 循环拼接字符串
    8. rows.push('
    9. '+ item.content +'评论时间:'+ item.time +'评论人:'+ item.username +'
    10. ')
  • })
  • $('#cmt-list').empty().append(rows.join('')) // 渲染列表的UI结构
  • })
  • }
  •  console.log(  $('#cmt-list').html());

    发表评论

    1. $('#formAddCmt').submit(function(e) {
    2. e.preventDefault() // 阻止表单的默认提交行为
    3. // 快速得到表单中的数据
    4. var data = $(this).serialize()
    5. $.post('http://www.liulongbin.top:3006/api/addcmt', data, function(res) {
    6. if (res.status !== 201) {
    7. return alert('发表评论失败!')
    8. }
    9. // 刷新评论列表
    10. getCmtList()
    11. // 快速清空表单内容
    12. $('#formAddCmt')[0].reset()
    13. })
    14. })

    完整代码

    1. function getCommentList() {
    2. $.ajax({
    3. method: 'GET',
    4. url: 'http://www.liulongbin.top:3006/api/cmtlist',
    5. success: function (res) {
    6. if (res.status !== 200) return alert('获取评论列表失败!')
    7. var rows = []
    8. $.each(res.data, function (i, item) {
    9. var str = '
    10. 评论时间:' + item.time + '评论人:' + item.username + '' + item.content + '
    11. '
  • rows.push(str)
  • })
  • $('#cmt-list').empty().append(rows.join(''))
  • // console.log( $('#cmt-list').html());
  • }
  • })
  • }
  • getCommentList()
  • $(function(){
  • $('#formAddCmt').submit(function(e){
  • e.preventDefault();
  • var data=$(this).serialize();
  • // console.log(data);
  • $.post('http://www.liulongbin.top:3006/api/addcmt', data, function(res) {
  • if (res.status !== 201) {
  • return alert('发表评论失败!')
  • }
  • // 刷新一下表单
  • getCommentList();
  • // 清空表单
  • $('#formAddCmt')[0].reset()
  • })
  • })})
    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <link rel="stylesheet" href="./lib/bootstrap.css" />
    9. <script src="./lib/jquery.js"></script>
    10. <script src="./js/cmt.js"></script>
    11. </head>
    12. <body style="padding: 15px;">
    13. <!-- 评论面板 -->
    14. <div class="panel panel-primary">
    15. <div class="panel-heading">
    16. <h3 class="panel-title">发表评论</h3>
    17. </div>
    18. <form class="panel-body" id="formAddCmt">
    19. <div>评论人:</div>
    20. <input type="text" class="form-control" name="username" autocomplete="off" />
    21. <div>评论内容:</div>
    22. <textarea class="form-control" name="content"></textarea>
    23. <button type="submit" class="btn btn-primary">发表评论</button>
    24. </form>
    25. </div>
    26. <!-- 评论列表 -->
    27. <!-- 列表组快速生成 -->
    28. <!-- 评论列表 -->
    29. <ul class="list-group" id="cmt-list">
    30. <li class="list-group-item">
    31. <span class="badge" style="background-color: #F0AD4E;">评论时间:</span>
    32. <span class="badge" style="background-color: #5BC0DE;">评论人:</span>
    33. Item 1
    34. </li>
    35. </ul>
    36. </body>
    37. </html>

    注意的一点,如果没有返回值可能是导入出现问题,要./如果直接lib有可能会失效

  • 相关阅读:
    echarts+node+ajax实现时间天气服务器
    矩阵(加速)。。。
    六大核心原则,引领自动化正确实施
    Selenium入门(二)Java整合Selenium实现模拟登录
    华为智能驾驶方案剖析
    软考信息系统项目管理师_历年真题_2019上半年错题集_上午综合知识题---软考高级之信息系统项目管理师054
    Excel - VBA的隔行拷贝功能
    Object和Function是函数,函数都有一个prototype属性
    python:基于super()函数初始化
    (附源码)springboot高校社团管理系统 毕业设计 231128
  • 原文地址:https://blog.csdn.net/weixin_64612659/article/details/127579627