zoukankan      html  css  js  c++  java
  • form表单提交

    整理一下form表单的提交方式

      1.form传统提交

        文本提交:    

    <form id="form_box" action="{:U('Api/test')}"  method="post">
            <input name="nickname">
            <input type="submit" value="提交">
    </form>

        文本图片提交:     

    <form id="form_box" action="{:U('Api/test')}"  method="post" enctype="multipart/form-data">
            <input name="nickname">
            <input type="file" name="file" id="file">
            <input type="submit" value="提交" onclick="return check()">
    </form>
    •   input按钮状态为submit
    •   action为跳转url
    •   method为请求方式

      如果包含了图片上传,必须修改编码类型为“multipart/form-data”,否则接收不到值

      

    function check() {
            var nickname=$("input[name='nickname']").val();
            if(!nickname){
                toastr.error('昵称不能为空');
                return false;  //阻止提交
            }
            var file=$("input[name='file']").val();
            if(!file){
                toastr.error('图片不能为空');
                return false;
            }
            // 检查是否是图片
            var fileFormat = file.substring(file.lastIndexOf(".")).toLowerCase();
            if (!fileFormat.match(/.png|.jpg|.jpeg/)) {
                toastr.error('上传错误,文件格式必须为:png/jpg/jpeg');
                return false;
            }
        }

    check方法是对空值进行判断,h5新特性可以设置属性required 要求必填

     2.jquery提交

        文本提交:    

        <form id="form_box" method="post">
              <input name="nickname">
              <input type="submit" value="提交">
        </form>       
         $('#form_box').submit(function () {
                var data = $('#form_box').serializeObject();
                console.log(data);
                $.post("{:U('Api/test')}",data,function (res) {
            //$('#form_box')[0].reset();
                })
            // return false;
          })

       以上操作提交,页面会刷新,根据业务需求,我们可以阻止刷新,并对表单内容进行重置。

       serializeObject()方法是对表单元素的序列化,返回的是对象      

      $.fn.serializeObject = function () {
            var o = {};
            var a = this.serializeArray();
            $.each(a, function () {
                if (o[this.name]) {
                    if (!o[this.name].push) {
                        o[this.name] = [o[this.name]];
                    }
                    o[this.name].push(this.value || '');
                } else {
                    o[this.name] = this.value || '';
                }
            });
            return o;
        }

     

        文本图片提交:    

    <form id="form_box" method="post" enctype="multipart/form-data">
            <input name="nickname" value="">
            <input type="file" name="file" id="file">
            <input type="submit" value="提交">
    </form>
        $('#form_box').submit(function () {
                var formData = new FormData();
                formData.append('file', $('#file')[0].files[0]);
                formData.append('name','哈哈');
                $.ajax({
                    type: "POST",
                    dataType: "json",
                    url: "{:U('Api/test')}" ,//url
                    data: formData,
                    contentType:false,  //为false才为正确类型
                    processData:false,  //为false不需要处理转换信息
                    success: function (res) {
                        console.log(res,'返回');
                    }
                });
            })

          由于文件流是无法被serializeArray()方法序列化的,所以改用FormData()

          FormData

            用以将数据序列化,其主要用于发送表单数据

            如果表单enctype属性设为multipart/form-data ,则会使用表单的submit方法来发送数据

          

          

          

      

        

  • 相关阅读:
    特别记录:OMNET神坑
    OMNet++运行项目后,出现错误:out/clang-release//DynaPacket_m.o:(.text+0x1296): 跟着更多未定义的参考到 _Unwind_Resume
    【2021年1月4日】与父谈话总结
    Ceph架构和原理
    Mysql的InnoDB存储引擎锁机制
    MySQL 分区表
    MySQL日志之binlog、redo log、undo log
    PTA刷题记录
    [POI2015]MYJ
    Manacher初步
  • 原文地址:https://www.cnblogs.com/dongzhi1111/p/10518398.html
Copyright © 2011-2022 走看看