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插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 jQuery
jQuery输入框密码的显示隐藏【代码分享】
Apr 29 jQuery
jQuery为某个div加入行样式
Jun 09 jQuery
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 jQuery
jQuery实现锚点向下平滑滚动特效示例
Aug 29 jQuery
jqueryUI tab标签页代码分享
Oct 09 jQuery
[原创]jQuery实现合并/追加数组并去除重复项的方法
Apr 11 jQuery
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
jquery 动态遍历select 赋值的实例
Sep 12 jQuery
jquery拖拽自动排序插件使用方法详解
Jul 20 jQuery
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 jQuery
基于ajax及jQuery实现局部刷新过程解析
Sep 12 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
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
简易js代码实现计算器操作
2013/04/15 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
js数组依据下标删除元素
2015/04/14 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
详细解析Python当中的数据类型和变量
2015/04/25 Python
Python定时器实例代码
2017/11/01 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
Python语言进阶知识点总结
2019/05/28 Python
Python生成一个迭代器的实操方法
2019/06/18 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
酒店营销策划方案
2014/02/07 职场文书
元宵节主持词
2014/03/25 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL