Ajax提交Form表单及文件上传的实例代码
前几天,发现了一些小问题。我在写后台管理页面时,需要上传一张图片。于是我就用很普通的Form表单上传有一段Json串和图片文件;
Form表单上传图片只需要在<form>标签里加上enctype='multipart/form-data',这样是可以上传图片的;
但问题来了,在我进行用Form表单提交的时候直接跳出来提交返回值的页面并且原先的页面刷新;
这样我们可以先到异步的Ajax可以实现局部刷新;
废话不多说了直接上代码;
首先是html:
<formid="form_insert"method="post"> <tablestyle="font-size:13px;margin:13pxauto;"> <tr> <tdstyle="text-align:right;">类型</td> <td>: <inputid="acttype"style="width:150px"class="easyui-textbox"data-options="required:true"></td> </tr> <tr><tdcolspan="2"style="height:13px"></td> </tr> <tr> <tdstyle="text-align:right;">名称</td> <td>: <inputid="actname"style="width:150px"class="easyui-textbox"data-options="required:true"></td> </tr> <tr><tdcolspan="2"style="height:13px"></td> </tr> <tr> <tdstyle="text-align:right;">开始时间</td> <td>: <inputid="actstarttime"style="width:150px"class="easyui-datetimebox"data-options="required:true"></td> </tr> <tr><tdcolspan="2"style="height:13px"></td> </tr> <tr> <tdstyle="text-align:right;">结束时间</td> <td>: <inputid="actendtime"style="width:150px"class="easyui-datetimebox"data-options="required:true"></td> </tr> <tr><tdcolspan="2"style="height:13px"></td> </tr> <tr> <tdstyle="text-align:right;">省</td> <td>: <inputid="mem_Province"style="width:150px"class="easyui-combobox"data-options="required:true"></td> </tr> <tr><tdcolspan="2"style="height:13px"></td> </tr> <tr> <tdstyle="text-align:right;">市</td> <td>: <inputid="mem_City"style="width:150px"class="easyui-combobox"data-options="required:true"></td> </tr> <tr><tdcolspan="2"style="height:13px"></td> </tr> <tr> <tdstyle="text-align:right;">门店</td> <td>: <inputid="mem_Shop"style="width:150px"class="easyui-combobox"data-options="required:true"></td> </tr> <tr><tdcolspan="2"style="height:13px"></td> </tr> <tr> <tdstyle="text-align:right;">具体地址</td> <td>: <inputid="actadd"style="width:150px"class="easyui-textbox"data-options="required:true"></td> </tr> </table> </form> <formid="form_sub"style="font-size:13px;"> <tablestyle="font-size:13px;margin:13pxauto;"> <tr> <tdstyle="text-align:right;">上传图片</td> <td>: <inputclass="easyui-filebox"name='photo'style="width:153px"data-options="required:true,prompt:'选择上传图片',buttonText:' 选 择 '"></td> <td><inputtype='text'id="Item"name='item'style="display:none;"></td> </tr> </table> </form> <divstyle="text-align:right;padding:2px5px;"> <aid="sub"class="easyui-linkbutton"data-options="iconCls:'icon-ok'"href="javascript:void(0)"> 保存 </a> <aclass="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(){ varactTimeStart1=$('#actstarttime').datebox('getValue'); varactTimeStart=changeDateToLong(actTimeStart1); varactTimeEnd1=$('#actendtime').datebox('getValue'); varactTimeEnd=changeDateToLong(actTimeEnd1); if(actTimeStart!=''&&actTimeEnd!=''&&(actTimeStart-actTimeEnd>0)){ $.messager.alert('警告','结束时间不能小于开始时间!','error'); returnfalse; } else{ if($('#form_insert').form('validate')){ varactType=document.getElementById("acttype").value; varactName=document.getElementById("actname").value; varactArea=document.getElementById("actadd").value; varactTimeStart1=$('#actstarttime').datebox('getValue'); varactTimeStart=changeDateToLong(actTimeStart1); varactTimeEnd1=$('#actendtime').datebox('getValue'); varactTimeEnd=changeDateToLong(actTimeEnd1); vart2=$('#mem_Shop').combobox('getValue'); varjsonObj={actType:actType,actName:actName,actTimeStart:actTimeStart,actTimeEnd:actTimeEnd,actArea:actArea,t2:t2}; varactivityMemberJson=JSON.stringify(jsonObj); document.getElementById("Item").value=activityMemberJson; varform=newFormData(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表单及文件上传的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!