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实现图片上传前本地预览
Apr 28 jQuery
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
jquery Form轻松实现文件上传
May 24 jQuery
详解jquery选择器的原理
Aug 01 jQuery
利用JQUERY实现多个AJAX请求等待的实例
Dec 14 jQuery
jQuery代码优化方法总结
Jan 29 jQuery
jQuery实现的手动拖动控制进度条效果示例【测试可用】
Apr 18 jQuery
jQuery实现模糊查询的方法分析
May 10 jQuery
jQuery实现简单复制json对象和json对象集合操作示例
Jul 09 jQuery
jQuery+PHP实现上传裁剪图片
Jun 29 jQuery
jQuery 选择器用法基础入门示例
Jan 04 jQuery
html中两种获取标签内的值的方法
Jun 16 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制作的意见反馈表源码
2007/03/11 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
JS实现Enter键跳转及控件获得焦点
2013/08/12 Javascript
jQuery的图片滑块焦点图插件整理推荐
2014/12/07 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
利用js canvas实现五子棋游戏
2020/10/11 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
python爬取网页转换为PDF文件
2018/06/07 Python
python单例设计模式实现解析
2020/01/07 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
网游商务专员求职信
2013/10/15 职场文书
军校本科大学生自我评价
2014/01/14 职场文书
网络销售员岗位职责
2015/04/11 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
如何在python中实现ECDSA你知道吗
2021/11/23 Python