Ajax提交表单数据(包含文件)

摘要:
否则,jquery将报告一个错误,例如“UnaughtTypeError:Illegalization”。因为jquery将尝试转换非字符串的内容,所以设置processData:false以禁用其转换,并设置contentType:false来告诉jquery不要为其设置content-Type标头,以防止上载失败。

1. 表单数据->JSON->后台

Ajax提交表单数据(包含文件)第1张

2. 表单序列化【方式一】

jquery.serializejson.js
<script src="http://t.zoukankan.com/js/jquery.serializejson.js"></script>
<script>
    $('#btnRegister').click(function(){
        console.log(JSON.stringify($('#form1').serializeJSON()))
        $.ajax({
            type: 'post',
            url: '/loginPro',
            contentType:'application/json;charset=utf-8',
            async: true,
            //设置验证方式,设置请求头
            data: $('#form1').serializeJSON(),
            success: function (result) {
            },
            error: function () {
                console.log('error')
            }
        });
    })

</script>

3. 使用FormData类

//表单提交
var formData = new FormData($('#addUserForm')[0])
console.log(formData)
$.ajax({
    url:'/user/addPro.do',
    type:'post',
    data:formData,
    contentType: false, //必须
    processData: false, //必须
    success:function (result) {
        
    },error:function () {
       
    }
});

  在上面的js代码中,我们使用Jquery的ajax方法来提交数据。

  注意:应该使用较新的Jquery,老版本的可能不支持,同时必须设置contentType : false和processData : false。否则,jquery会报“Uncaught TypeError: Illegal invocation”这样的错误。因为jquery会试图将不是字符串的内容进行转换,设置processData : false禁止其转换,设置contentType : false是告诉jquery不要为其设置Content-Type头,防止上传失败。

  注意:对于springmvc的后台,需要配置视图解析器,否则文件为null:

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize">
            <value>102400</value>
        </property>
        <property name="defaultEncoding">
            <value>utf-8</value>
        </property>
    </bean>

4. string <-->Object

var str = '{"name":"admin","age":20}';
var obj = eval('('+str+')');  //方式一

//方式二,注意 JSON字符串的引号必须使用  "
 var obj = JSON.parse(str)

免责声明:文章转载自《Ajax提交表单数据(包含文件)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Django-REST-Framework JWT 实现SSO认证(上)ResultSet用法集锦 (转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

django学习-29.表单提交方式之一:post请求(注册/登录/改密)

目录结构 1.写这篇博客的目的 2.完整操作流程 2.1.第一步:新增相关html页面 2.1.1.新增一个【index_html.html】 2.1.2.新增一个【login_html.html】 2.1.3.新增一个【register_html.html】 2.1.4.新增一个【register_success_html.html】 2.1.5.新增一...

【转载】C# MVC 实现登录的5种方式

C# MVC 实现登录的5种方式     最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来。    十年河东十年河西,莫欺少年穷。     学无止境,精益求精    小弟之前做过三月的MVC,后来又一直webForm开发,再后来,也就是现在做WPF,最近随着项目进入尾声,也就慢慢清闲了下来,清闲的时间甚是无聊,...

结合丰富示例深入讲解Ajax架构和最佳实践——《深入Ajax:架构与最佳实践》

媒体评论 “本书不仅介绍了编程技术,而且全面讲解了Ajax应用程序的生命周期。如果你想成为一名专业的前端开发人员,一定会被本书中关于架构的真知灼见和最佳实践深深打动。” ——Andi Gutmans ,PHP创始人暨Zend技术公司CTO “本书循序渐进地讲述技术背后的最佳设计和实践,包括很多好的模式和实践。”                    ...

解决SpringSecurity阻止ajax的POST和PUT请求,导致403Forbidden的问题

前言:最近在整合springboot+springsecurity,在PUT请求的时候出现了403的问题,这里记录一下解决的过程 到Spring的官网去查查SpringSecurity的参考手册看看为什么会有403的问题官网是这样解释问题的SpringSecurity默认是禁止接收POST请求的,而GET是默认可以的,官网给出两个解决方案:1是发送请求...

struts 2 时间控件

在使用struts2框架时,为我们提供了时间选择器控件:datetimepicker。但是在使用过程中会出现一些问题,主要就是struts2版本更新时做了一些修改。在struts2.0时,使用<s:datetimepicker/>时,需要在<head></head>标签中申明:<s:head theme="ajax...

防止Web表单重复提交的方法总结

在Web开发中,对于处理表单重复提交是经常要面对的事情。那么,存在哪些场景会导致表单重复提交呢?表单重复提交会带来什么问题?有哪些方法可以避免表单重复提交? 表单重复提交的场景 1.场景一:服务端未能及时响应结果(网络延迟,并发排队等因素),导致前端页面没有及时刷新,用户有机会多次提交表单 2.场景二:提交表单成功之后用户再次点击刷新按钮导致表单重复提交...