dongzhi1111

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方法来发送数据

      

      

      

  

    

发表于 2019-03-12 17:56  Favour丶in  阅读(1775)  评论(0编辑  收藏  举报
 

分类:

技术点:

相关文章:

  • 2021-12-08
  • 2021-12-05
  • 2021-12-25
  • 2021-12-10
  • 2021-11-27
  • 2021-12-10
  • 2022-02-28
猜你喜欢
  • 2021-11-29
  • 2021-12-10
  • 2021-12-21
  • 2021-12-04
相关资源
相似解决方案