问题描述:execle导入后 数据 无刷新 显示在 输入页面
分析过程:
涉及:easyui ajaxfileupload.js 使用struts2
设计1:在dialog里面放一个iframe创建一个内联框架,在此进行提交,刷新填充数据后,通过选择回传到主页面。
设计2:使用ajax实现需求
解决途径:
经验总结:
因为使用struts2框架,直接用struts2的文件上传,如何将文件作为参数set到action里面?
把表单的enctype属性设置为multipart/form-data这种编码方式的表单会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数里。需要Commons-FileUpload及Commons-IO包
<s:form action="doUpload" method="post" enctype="multipart/form-data"> <s:file name="upload" label="File"/> <s:submit/> </s:form>
不使用表单方式提交,可以采用ajax的
serialize() 方法序列号化表单。 $("button").click(function(){ $("div").text($("form").serialize()); });
序列化为类似a=1&b=2&c=3&d=4&e=5的字符串,只能对表单元素(比如 input 及/或 文本框),或者 form 元素本身而无法将文件进行序列化
这里面使用ajaxfileupload.js,没有把文件转换成二进制。他首先是在页面中创建一个iframe,然后再创建一个form表单,并将fileElementId所指定的区域一并拼接到form表单中。当你触发ajax事件的时候,它会自动将这个表单提交。这就是ajax整个工作原理,也就是类似设计1中的想法,只不过将这个iframe放在一个显示不到的地方,然后进行表单提交,后台对数据进行处理(使用POI对execle进行解析、封装),
//将List转化为JSON JSONArray json=JSONArray.fromObject(imPayUnions); //写入到前台 response.getWriter().write(json.toString());
在$.ajaxFileUpload()的dataType:'json',中
if( type == "json" ) { eval( "data = " + data ); }
al(string)执行data这个String类型中的内容,转换为object对象
插件将json格式转换为javascript对象类型,这样便可以再
success: function (data){
$("#"+x+"").html("<img style=' 88px;height: 88px;' alt='' src='"+data+"'>");
}
$("#"+x+"").html("<img style=' 88px;height: 88px;' alt='' src='"+data+"'>");
}
直接使用此data参数 如此边实现了ajax数据上传的无刷新