利用ajax可以实现很酷的效果,在不刷新页面的情况下提交表单、修改数据状态等等,可是如果表单里还有input:file可就惨了,ajax不支持文件的处理啊!
ajax是使用了浏览器内部的XmlHttpRequest对象来传输XML数据的。既然是Xml的数据传输,那么传输的数据肯定是文本的,而文件上传则需要传输二进制的数据,显然用ajax是不可能的。
可是ajax这么好用,大家也都习惯了这种开发和使用体验,试想如果form表单包含文件上传,那提交表单要刷新整个页面,提交成功还好,提交失败了表单数据可都没有了,这颗真难受。有没有什么办法能实现类似的逻辑呢?
请注意以下属性:form:target、iframe、parrent.callback() ,我们利用这些小属性,来完成伪·ajax上传下载文件吧。
<!-- 这是数据表单 -->
<form action="/upload" id="form1" method="post" enctype="multipart/form-data" target="hidden_frame">
<input type="file" name="uploadfile" accept="*" />
<input type="submit" value=