侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Ajax提交Form表单及文件上传的实例代码

前端  /  管理员 发布于 5年前   279

前几天,发现了一些小问题。我在写后台管理页面时,需要上传一张图片。于是我就用很普通的Form表单上传有一段Json串和图片文件;

Form表单上传图片只需要在<form>标签里加上enctype = 'multipart/form-data',这样是可以上传图片的;

但问题来了,在我进行用Form表单提交的时候直接跳出来提交返回值的页面并且原先的页面刷新;

这样我们可以先到异步的Ajax可以实现局部刷新;

废话不多说了 直接上代码;

首先是html:

<form id = "form_insert" method = "post"><table style = "font-size: 13px; margin: 13px auto;"> <tr><td style = "text-align: right;">类型</td><td>:  <input id = "acttype" style = "width:150px" class = "easyui-textbox" data-options = "required:true"></td></tr><tr><td colspan = "2" style = "height: 13px"></td></tr><tr><td style = "text-align: right;">名称</td><td>:  <input id = "actname" style = "width:150px" class = "easyui-textbox" data-options = "required:true"></td></tr><tr><td colspan = "2" style = "height: 13px"></td></tr><tr><td style = "text-align: right;">开始时间</td><td>:  <input id = "actstarttime" style = "width:150px" class = "easyui-datetimebox" data-options = "required:true"></td></tr><tr><td colspan = "2" style = "height: 13px"></td></tr><tr><td style = "text-align: right;">结束时间</td><td>:  <input id = "actendtime" style = "width:150px" class = "easyui-datetimebox" data-options = "required:true"></td></tr><tr><td colspan = "2" style = "height: 13px"></td></tr><tr><td style = "text-align: right;">省</td><td>:  <input id ="mem_Province" style = "width:150px" class = "easyui-combobox" data-options = "required:true"></td></tr><tr><td colspan="2" style="height: 13px"></td></tr><tr><td style="text-align: right;">市</td><td>:  <input id = "mem_City" style = "width:150px" class = "easyui-combobox" data-options = "required:true"></td></tr><tr><td colspan = "2" style = "height: 13px"></td></tr><tr><td style = "text-align: right;">门店</td><td>:  <input id = "mem_Shop" style = "width:150px" class = "easyui-combobox" data-options = "required:true"></td></tr><tr><td colspan="2" style="height: 13px"></td></tr><tr><td style = "text-align: right;">具体地址</td><td>:  <input id = "actadd" style = "width:150px" class = "easyui-textbox" data-options = "required:true"></td></tr></table></form><form id = "form_sub" style = "font-size: 13px;"><table style="font-size: 13px; margin: 13px auto;"><tr><td style = "text-align: right;">上传图片</td><td>:  <input class = "easyui-filebox" name = 'photo' style = "width:153px" data-options = "required:true,prompt:'选择上传图片',buttonText:' 选 择 '"></td><td><input type = 'text' id = "Item" name = 'item' style = "display:none;"></td></tr></table></form><div style = "text-align:right; padding:2px 5px;"><a id = "sub" class = "easyui-linkbutton" data-options = "iconCls:'icon-ok'" href = "javascript:void(0)">保存</a>    <a class = "easyui-linkbutton" data-options = "iconCls:'icon-quxiao'" href = "javascript:void(0)" onclick = "window_open($('#insert_form'), 'close')">取消</a>    </div>

以上是html代码,为了方便大家copy,css直接在标签里了;

有很多朋友想问,为什么写两个form表单;

这是因为根据后台接收数据的需求,传的是信息变成字符串和图片;

首先把信息变成字符串;

再放到第二个Form表单里,细心地朋友发现在第二个form表单里<input>标签里style=“display:none”这是个隐藏的标签;

不错我是通过第一个form表单获取的数据通过js变成字符串再放到隐藏的标签里;

这样通过Ajax提交第二个Form表单就可以了;

js代码:

$( '#sub' ).click( function () {  var actTimeStart1 = $ ('#actstarttime') . datebox ('getValue');  var actTimeStart = changeDateToLong(actTimeStart1);  var actTimeEnd1 = $('#actendtime').datebox('getValue');  var actTimeEnd = changeDateToLong(actTimeEnd1);  if(actTimeStart != '' && actTimeEnd != '' && (actTimeStart - actTimeEnd > 0)){    $.messager.alert('警告','结束时间不能小于开始时间!','error');    return false;  }  else{    if ($('#form_insert').form('validate')) {      var actType = document.getElementById("acttype").value;      var actName = document.getElementById("actname").value;      var actArea = document.getElementById("actadd").value;      var actTimeStart1 = $('#actstarttime').datebox('getValue');      var actTimeStart = changeDateToLong(actTimeStart1);      var actTimeEnd1 = $('#actendtime').datebox('getValue');      var actTimeEnd = changeDateToLong(actTimeEnd1);      var t2 = $('#mem_Shop').combobox('getValue');      var jsonObj = {actType:actType,actName:actName,actTimeStart:actTimeStart,actTimeEnd:actTimeEnd,actArea:actArea,t2:t2};      var activityMemberJson = JSON.stringify(jsonObj);      document.getElementById("Item").value=activityMemberJson;      var form = new FormData(document.getElementById("form_sub"));      $.ajax({        url : ../activity/actionActivityInsert', //http://www.cnblogs.com/jayxxxxxxx/        type : "post",        data : form, //第二个Form表单的内容        processData : false,        contentType : false,        error : function(request) {        },        success : function(data) {          $('#box').datagrid('reload');        }      });      window_open($('#insert_form'), 'close');    }else {      $.messager.alert('警告' , '信息不完整!' , 'error');    }  }});

大家看到了我用了FormData方法,说真的这个在html5里实在是太好用了,上传图片都不用再写enctype = 'multipart/form-data';

以上所述是小编给大家介绍的Ajax提交Form表单及文件上传的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!


  • 上一条:
    ajax处理服务器返回的三种数据类型方法
    下一条:
    ajax跨页面提交表单
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 使用 Alpine.js 排序插件对元素进行排序(0个评论)
    • 在js中使用jszip + file-saver实现批量下载OSS文件功能示例(0个评论)
    • 在vue中实现父页面按钮显示子组件中的el-dialog效果(0个评论)
    • 使用mock-server实现模拟接口对接流程步骤(0个评论)
    • vue项目打包程序实现把项目打包成一个exe可执行程序(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-03
    • 2018-04
    • 2018-05
    • 2018-06
    • 2018-09
    • 2018-11
    • 2018-12
    • 2019-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-04
    • 2021-05
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客