使用 jquery.form.js插件上传带有附件的表单
来源:互联网 发布:免费手机文字扫描软件 编辑:程序博客网 时间:2024/05/22 00:45
使用 jquery.form.js插件上传带有附件的表单,附件可以是.txt,.xls,.csv。下面就介绍下可以上传文件的表单,并且限制上传文件的大小和类型。
1、前期工作:在html的<head></head>标签里面引入jquery.js和jquery.form.js插件,必须先引入前者在引入后者,如下面所示:
<script src="http://i.gtimg.cn/qzone/biz/gdt/lib/jquery/jquery-2.1.4.js?max_age=31536000"></script><script src='https://cdn.bootcss.com/jquery.form/4.2.2/jquery.form.min.js'></script>2、html如下:
<form enctype="multipart/form-data" method="post" id='addForm'> <div id="filePanel"> <a class="selectFileDiv" href="javascript:;"> 选择文件 <input type="file" name="file" id="selectFile"> </a> <span id="fileNameOrFileFormat">支持文件格式:txt,xls,csv</span> </div> <input type='button' id="upLoad" class="btn customButton" value='上传' name="上传" /> </form>
3、js如下:
$(function(){ var activity_id = sessionStorage.getItem('activity_id'); // 点击上传按钮 $('#upLoad').click(function(){ $('#addForm').ajaxSubmit({ forceSync: false, url: 文件上传到服务器的路径, type: 'post', dataType: 'json', success: function(response){ console.log('success'); }, error: function(response){ console.log('error'); } }); }); // 当type=file的input的value改变时触发下面函数 $("#selectFile").on("change",function(){ // var filePath = $(this).val(); //获取到input的value,里面是文件的路径 var file = document.getElementById('selectFile').files; //获取上传的文件 var fileName = file[0].name; var fileSize = (file[0].size/1024).toFixed(2); // 获取文件的格式为.txt、.xsl、.csv var fileFormat = fileName.substring(fileName.lastIndexOf(".")).toLowerCase(); if( checkFileFormat(fileFormat) == false){ console.log("上传的文件类型有误!"); return; } // 文件大小不超过200KB; if(fileSize > 200){ console.log("上传的文件太大了!"); return; } }); // 校验文件格式 function checkFileFormat(format) { if (format.match(/.txt|.xls|.csv/)) { return true; } return false; }});
4、问题:按照上面js的写法,当文件上传成功,却总是进入ajaxSubmit()函数的error里面
5、原因:应该是dataType的原因,dataType为json,但是返回的data不是json格式
6、解决方法:将ajaxSubmit()方法里面的dataType去掉,上传文件成功,就回调ajaxSubmit()函数里面的success函数了。如下面所示:
$('#upLoad').click(function(){ $('#addForm').ajaxSubmit({ forceSync: false, url: 文件上传到服务器的路径, type: 'post', //dataType: 'json', success: function(response){ console.log('success'); }, error: function(response){ console.log('error'); } }); });
7、ajaxSubmit()方法里面的success(response)里面的返回值是一个json的string类型,所以需要将response转换成json格式,利用eval()
函数就可以达到这个功能。将点击上传按钮的js改成如下形式:
// 点击上传按钮 $('#upLoad').click(function(){ $('#addForm').ajaxSubmit({ forceSync: false, url: globalConfig.pre_api_url + '/wxwall_api/cj/upload_names_file.php', type: 'post', // dataType: 'json', success: function(response){ var obj = eval ("(" + response + ")"); // 上传成功,显示抽奖人数 consol.log(obj); //obj就是json格式 }, error: function(response){ console.log('error'); } }); });
8、按照上面的写法,将response转变成json,如果response里面包含的字段有status,msg,data,如果 msg是用中文写的,那么
传回来之后是用unicode编码汉字,所以将response转换成json之后,在获取到msg之后,需要对它解码,如下面所示:
// 点击上传按钮 $('#upLoad').click(function(){ if( $('#selectFile').val() == '' ){ error_prompt_alert('请先选择上传的文件!'); return; } $('#addForm').ajaxSubmit({ forceSync: false, url: globalConfig.pre_api_url + '/wxwall_api/cj/upload_names_file.php', type: 'post', // dataType: 'json', success: function(response){ // 将字符串解析成json对象 var obj = eval ("(" + response + ")"); var status = obj.status; var msg = obj.msg; var data = obj.data; msg = decodeURI(msg)//将unicode编码转换成中文 console.log(msg); }, error: function(response){ console.log('error'); } }); });
阅读全文
0 0
- 使用 jquery.form.js插件上传带有附件的表单
- jquery表单插件jquery.form.js的使用介绍
- Jquery的表单插件 jquery.form.js
- jQuery Form表单插件jquery.form.js
- jquery form 表单插件的使用
- 使用jquery插件jquery.form.js,异步提交表单 1
- 使用jQuery.form插件实现表单异步提交+上传文件
- 使用jQuery.form插件实现表单异步提交+上传文件
- Form表单插件jquery.form.js
- jquery.form.js表单插件 如何结合表单验证插件jquery.validate.js一起使用
- 使用jquery-form.js异步上传文件和提交表单
- jQuery.form.js-表单插件使用及API
- jquery表单验证插件 jquery.form.js
- jquery表单验证插件 jquery.form.js
- jquery表单插件 jquery.form.js
- jquery表单插件 jquery.form.js
- jquery表单验证插件 jquery.form.js
- jquery表单插件 jquery.form.js
- spring注解
- win7下用VM12安装centos6.5
- MFC中使用duilib
- 考研院校专业课选择及自动控制原理备考的宏观战略分析(二)
- C语言 从键盘输入一个日期计算该日期是该年的第几天
- 使用 jquery.form.js插件上传带有附件的表单
- JS实现简单的时分秒倒计时代码
- 【寒江雪】应用层协议
- webview加载html图片过大左右滑动的解决/webview加载图片自适应大小
- 软件管理
- PHP数据类型,数据存储
- iOS-使用imageView添加图片无法展示的三种解决方案
- Win10 RS3版 删除资源管理器中的“3D 对象”
- AIX常用的编译选项解释