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实现select下拉框获取当前选中文本、值、索引
May 08 jQuery
jQuery遍历节点方法汇总(推荐)
May 13 jQuery
JQuery Ajax 异步操作之动态添加节点功能
May 24 jQuery
深入理解jquery的$.extend()、$.fn和$.fn.extend()
Jul 08 jQuery
jQuery取得元素标签名称小结(附代码)
Aug 16 jQuery
jQuery Dom元素操作技巧
Feb 04 jQuery
jQuery实现的电子时钟效果完整示例
Apr 28 jQuery
jQuery实现图片下载代码
Jul 18 jQuery
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 jQuery
jQuery实现异步上传一个或多个文件
Aug 17 jQuery
jquery插件懒加载的示例
Oct 24 jQuery
jQuery实现动态操作table行
Nov 23 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实现Ftp用户的在线管理
2012/02/16 PHP
php实现的ping端口函数实例
2014/11/12 PHP
PHP实现的简易版图片相似度比较
2015/01/07 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
2018/03/02 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
一键搞定python连接mysql驱动有关问题(windows版本)
2016/04/23 Python
Python实现自动发送邮件功能
2021/03/02 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
Python线程同步的实现代码
2018/10/03 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
Django时区详解
2019/07/24 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
如果Session Bean得Remove方法一直都不被调用会怎么样
2012/07/14 面试题
计算机大学生的自我评价
2013/10/15 职场文书
大学团支书的自我评价分享
2013/12/14 职场文书
大学生职业规划论文
2014/01/11 职场文书
试用期员工考核制度
2014/01/22 职场文书
高校教师自荐信范文
2014/03/13 职场文书
遗产继承公证书
2014/04/09 职场文书
授权委托书公证
2014/09/14 职场文书
Flink 侧流输出源码示例解析
2022/09/23 Servers
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS