前端学习--Ajax(2) form表单

文章介绍了HTML表单的基本组成,包括<form>标签的属性如action、target、method和enctype,以及表单同步提交的缺点和Ajax异步提交的优点。通过jQuery示例展示了如何监听表单提交事件并使用Ajax获取和提交表单数据,以避免页面刷新,提高用户体验。
摘要由CSDN通过智能技术生成

一、form表单

组成:表单标签、表单域(采集信息)、表单按钮(提交)

1.1 <form>的属性

action -- 向何处发送表单数据 如果不写默认是当前页面url

target -- 在何处打开action的url

                _blank 在新窗口打开

                _self 默认,在相同的框架打开

method -- 以何种方式把表单提交到action的url

                get 在请求的url会体现数据,Query String Parameters中会解析url中的数据

                适用于简单数据

                post 数据更加隐蔽安全,不会在url体现

                适用于大量复杂数据

 enctype -- 发送数据前如何对数据编码

                application/x-www-form-urlencoded 默认值,表示发送前编码所有字符

                multipart/form-data 不对字符编码,文件上传时必须使用

                text/plain 空格转换为‘+’号,不对特殊字符编码(不常用)

 1.2 表单同步提交

点击submit按钮触发表单提交的操作,使页面跳转到action URL的行为

缺点:

整个页面发生跳转,用户体验差

页面之前的状态和数据会丢失

解决:表单只采集数据,ajax将数据提交到服务器 

二、通过Ajax提交表单数据

jQuery中的监听表单提交事件

// 1
$("#form1").submit(fucntion(e){
    
})

// 2
$('#form1').on('submit',function(e){

})

2.1 获取表单数据

使用该函数必须给form的每个元素添加name

$(selector).serialize()

案例--评论列表

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../lib/bootstrap.css">
    <style>
        body{
            padding: 20px;
        }
        .list-group-item span:first-child{
            background-color: lightskyblue;
        }
        .list-group-item span:last-child{
            background-color: lightsalmon
        }
    </style>
</head>
<body>
    <div class="panel panel-primary">
        <div class="panel-heading">
            <h3 class="panel-title">发表评论</h3>
        </div>
        <form class="panel-body" id="cmtAdd">
            <div>评论人:</div>
            <input type="text" class="form-control" name="username" />
            <div>评论内容:</div>
            <textarea class="form-control" name="content"></textarea>
            <button type="submit" class="btn btn-primary">发表评论</button>
        </form>
    </div>

    <ul class="list-group">
        <!-- <li class="list-group-item">
            <span class="badge">评论人:</span>
            <span class="badge">评论时间:</span>
        </li>
        <li class="list-group-item">
            <span class="badge">评论人:</span>
            <span class="badge">评论时间:</span>
        </li>
        <li class="list-group-item">
            <span class="badge">评论人:</span>
            <span class="badge">评论时间:</span>
        </li> -->
    </ul>

    <script src="../lib/jquery.js"></script>
    <script>
        function getCommentList(){
            $.ajax({
                method:'GET',
                url:'http://www.liulongbin.top:3006/api/cmtlist',
                success:function(res){
                    if(res.status !== 200)return alert(res.msg)
                    let rows = []
                    $.each(res.data, function(i,item){
                        rows.push(`<li class="list-group-item">
                                    ${item.content}<span class="badge">评论人:${item.username}</span>
                                    <span class="badge">评论时间:${item.time}</span></li>`)
                    })
                    $('.list-group').html(rows.join(''))
                }
            })
        }
        getCommentList()

        $('#cmtAdd').submit(function(e){
            e.preventDefault()
            let data = $(this).serialize()
            console.log(data)
            $.post('http://www.liulongbin.top:3006/api/addcmt', data, function(res){
                if(res.status !== 201)return alert(res.msg)
                getCommentList()
                //固定写法 将jq转换成原始dom元素 重置表单
                $('cmtAdd')[0].reset()
            })
        })
    </script>
</body>
</html>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值