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中each循环的简单回滚操作
May 05 jQuery
jQuery 1.9版本以上的浏览器判断方法代码分享
Aug 28 jQuery
jQuery实现html双向绑定功能示例
Oct 09 jQuery
jQuery实现的鼠标滚轮控制图片缩放功能实例
Oct 14 jQuery
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 jQuery
jQuery基于Ajax实现读取XML数据功能示例
May 31 jQuery
jQuery实现导航样式布局操作示例【可自定义样式布局】
Jul 24 jQuery
jQuery超简单遮罩层实现方法示例
Sep 06 jQuery
详解jQuery获取特殊属性的值以及设置内容
Nov 14 jQuery
jquery实现垂直无限轮播的方法分析
Jul 16 jQuery
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 jQuery
jquery实现拖拽添加元素功能
Dec 01 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初学者头痛的十四个问题
2006/07/12 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
JavaScript 动态改变图片大小
2009/06/11 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
JavaScript中的Function函数
2015/08/27 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
JS数组及对象遍历方法代码汇总
2020/06/16 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
python避免死锁方法实例分析
2015/06/04 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
python中的数组赋值与拷贝的区别详解
2019/11/26 Python
Pytorch 多块GPU的使用详解
2019/12/31 Python
python__new__内置静态方法使用解析
2020/01/07 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
如何完美的建立一个python项目
2020/10/09 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
白兰氏健康Mall:BRAND’S
2017/11/13 全球购物
计算机专业优秀大学生自我总结
2014/01/21 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
学校运动会霸气口号
2014/06/07 职场文书
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
oracle索引总结
2021/09/25 Oracle
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸