jquery ajax异步提交表单数据的方法


Posted in jQuery onOctober 27, 2017

使用jquery的ajax方法可以异步提交表单,成功后后台返回json数据,回调函数处理,可以不用刷新页面,达到异步的目的;

处理表单的数据可以用serialize()方法进行序列化,而如果提交的数据包括文件流的话,就需要使用 FormData对象:

不带文件的表单数据使用:var data = $(form).serialize();

带文件的表单数据使用:   var  data = new FormData($(form)[0]);

一、不带文件的ajax提交数据:

html:form表单

<form id="addForm" action="${pageContext.request.contextPath}/admin/saveAdd" method="post">    
  <input type="text" name="name" placeholder="请输入名字" />
  <input type="password" name="password" placeholder="密码"/>
 </form>
<button type="button" id="submitAdd">确认</button>

jquery 异步处理

$("#submitAdd").click(function(){
    
   var targetUrl = $("#addForm").attr("action");    
   var data = $("#addForm").serialize();     
    $.ajax({ 
     type:'post',  
     url:targetUrl, 
     cache: false,
     data:data,  
     dataType:'json', 
     success:function(data){      
       alert('success');
     },
     error:function(){ 
      alert("请求失败")
     }
    })
    
 })

 

二、带文件的ajax提交数据:

 html:form表单

 有文件上传的form表单需要在<form>标签里加入 enctype="multipart/form-data"属性 :

<form id="addForm" action="${pageContext.request.contextPath}/admin/saveAdd" method="post"enctype=" multipart/form-data">    
  <input type="text" name="name" placeholder="请输入名字" />
  <input type="password" name="password" placeholder="密码"/>
  <input type="file" name="avatar" />
 </form>
<button type="button" id="submitAdd">确认</button>

 jquery 异步处理

$("#submitAdd").click(function(){
    
   var targetUrl = $("#addForm").attr("action");    
   var data = new FormData($( "#addForm" )[0]);     
    $.ajax({ 
     type:'post',  
     url:targetUrl, 
     cache: false,    //上传文件不需缓存
     processData: false, //需设置为false。因为data值是FormData对象,不需要对数据做处理
     contentType: false, //需设置为false。因为是FormData对象,且已经声明了属性enctype="multipart/form-data"
     data:data,  
     dataType:'json', 
     success:function(data){      
       alert('success');
     },
     error:function(){ 
      alert("请求失败")
     }
    })
    
 })

上面是用<form>表单来构建FormData对象,如果没有<form>表单处理方式如下:

html:没有form表单

<div id="uploadFile">
 <input id="file" name="avatar" type="file"/>
 <button id="upload" data-url="/admin/upload" type="button">上传头像</button>
</div>

jquery异步处理:

$("#upload").click(function(){
    
   var targetUrl = $(this).attr("data-url");    
   var data = new FormData();
   //FormData对象加入参数
   data.append('file', $('#file')[0].files[0]); //'file' 为参数名,$('#file')[0].files[0])获取上传的文件,如果需上传多个文件,要在<input>标签加上属性multiple    
    $.ajax({ 
     type:'post',  
     url:targetUrl, 
     cache: false,    
     processData: false, 
     contentType: false, 
     data:data,  
     dataType:'json', 
     success:function(data){      
       alert('success');
     },
     error:function(){ 
      alert("请求失败")
     }
    })
    
 })

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
Apr 10 jQuery
基于jQuery封装的分页组件
Jun 26 jQuery
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
Nov 10 jQuery
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
js与jQuery实现获取table中的数据并拼成json字符串操作示例
Jul 12 jQuery
jquery操作select常见方法大全【7种情况】
May 28 jQuery
基于jquery ajax的多文件上传进度条过程解析
Sep 11 jQuery
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
jquery选择器和属性对象的操作实例分析
Jan 10 jQuery
jQuery HTML css()方法与css类实例详解
May 20 jQuery
jquery实现简单每周轮换的日历
Sep 10 jQuery
360提示[高危]使用存在漏洞的JQuery版本的解决方法
Oct 27 #jQuery
关于jQuery里prev()的简单操作代码
Oct 27 #jQuery
jQuery判断网页是否已经滚动到浏览器底部的实现方法
Oct 27 #jQuery
JavaScript自执行函数和jQuery扩展方法详解
Oct 27 #jQuery
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 #jQuery
使用JQuery实现图片轮播效果的实例(推荐)
Oct 24 #jQuery
jquery select插件异步实时搜索实例代码
Oct 20 #jQuery
You might like
浅谈PHP 闭包特性在实际应用中的问题
2009/10/30 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
2007/01/09 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
JavaSript中变量的作用域闭包的深入理解
2014/05/12 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
Node.js和Express简单入门介绍
2017/03/24 Javascript
angular.js指令中的controller、compile与link函数的不同之处
2017/05/10 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
速比涛英国官网:Speedo英国
2019/07/15 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
党课学习思想汇报
2014/01/02 职场文书
大学生职业生涯规划书模板
2014/01/18 职场文书
大学活动总结模板
2014/07/10 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
实习报告怎么写
2019/06/20 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang