在ajax还没有流行起来的时候,因为表单使用form的action进行页面跳转提交,所以不存在什么问题。
自从ajax流行起来之后,一般的表单都是通过ajax方式提交,所以碰到带文件上传的表单就比较麻烦。后来在网上查了一下,基本都没有比较好的解决办法,所以还是对这种特殊的表单使用页面跳转方式提交。最近看到同事用一种伪ajax方式解决了此问题。其基本原理就是在页面增加一个隐藏iframe,然后通过ajax提交除文件之外的表单数据,在表单数据提交成功之后的回调函数中,通过form单独提交文件,而这个提交文件的form的target就指向前述隐藏的iframe。代码如下(注意form的target属性指向隐藏的iframe):
<form style="padding:0px;margin:0px;" target="upload" action="/xxx/xx.do" id="uploadForm" name="uploadForm" encType="multipart/form-data" method="post">
<input type="file" id=""attachFile/>
</form>
<iframe name="upload" style="display:none"></iframe>
上述伪ajax方法的缺点是,表单数据和文件数据不能做到一个事物里面,如果后面文件上传失败(比如网络中断、服务器down掉等),则前面上传的表单数据算是垃圾数据了。当然这个在对数据一致性要求不是很高的环境,还是不错的解决办法。
分享到:
相关推荐
然而,通过使用隐藏的iframe,我们可以实现Ajax方式提交带文件上传的表单。 基本思路如下: 1. **创建HTML表单**:首先,我们需要创建一个包含文件输入字段的表单,设置enctype为"multipart/form-data",method为...
文件上传在Web应用中是一个常见的需求,传统方式通常是通过表单提交,页面会跳转或刷新,这在用户体验上并不理想。Ajax文件上传则允许用户在不离开当前页面的情况下完成文件上传,提升了交互性。然而,由于浏览器...
在隐藏的iframe中提交表单是伪Ajax上传的核心技术。通过JavaScript创建一个隐藏的iframe元素,并将表单的action设置为这个iframe的名称,使得表单提交时,实际上是提交到一个在当前页面内嵌的隐藏的iframe中,而不是...
下面将详细讲解如何利用这些技术来实现文件上传,并带上传进度条以及根据扩展名过滤文件的功能。 首先,`ExtJS` 是一个强大的JavaScript库,用于构建桌面级的富客户端应用程序。它提供了丰富的组件,包括文件上传...
用户将图片拖入此区域后,后台会通过AJAX异步提交文件,避免页面刷新,提高用户体验。 在实际应用中,为了安全和性能考虑,我们还需要处理一些额外的问题,例如: - 文件类型检查:限制用户只能上传特定类型的图片...
此外,jQuery还有许多插件可以进一步提升表单的用户体验,例如`jQuery UI`的Autocomplete插件可以实现输入框的自动补全,`jQuery Form Plugin`可以轻松处理表单提交,包括异步提交(AJAX)和文件上传。这些插件通常...
在本篇文章中,我们将探讨如何使用JavaScript实现表单多文件上传,并对上传界面进行美化处理。此外,我们还将实现一个功能,允许用户在选中文件后删除不想要的文件项。 ### 文件上传基础 文件上传功能主要通过HTML...
2. **AJAX提交**:利用jQuery的`.ajax()`方法,可以实现无刷新的表单提交,提高用户体验。 3. **插件和库**:jQuery有许多与表单相关的插件,如validate.js用于表单验证,select2提供高级选择器效果,bootstrap的...
- 首先,由于Ajax无法直接处理文件上传,我们需要使用同步的表单提交。但是为了不中断用户的交互,我们可以将表单的提交目标设置为一个隐藏的`<iframe>`,这样在上传过程中用户界面不会刷新。 - 表单的`enctype`...
- 表单提交或异步上传:利用XMLHttpRequest或Fetch API实现文件的异步上传,通常配合Ajax技术,避免页面刷新。 - 错误处理:如果上传过程中出现问题,如文件格式不正确、网络错误等,JavaScript可以提供相应的提示...
这个插件允许开发者轻松地实现Ajax提交表单,避免了页面刷新,提供了更好的用户体验。Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的技术,通过在后台与服务器进行少量数据交换,使得网页可以部分...
ajax操作-伪ajax(iframe) ajax操作-时机选择 文件上传(3种方式)-1 文件上传-时机选择及预览-2 图片验证码 KindEditor基本使用和文件操作 作业 第25周 今日内容概要 博客系统示例预览 组合搜索组件 JSONP跨域...
传统的多图上传流程通常是用户选择图片,文件上传到服务器,然后返回存储路径,最后在用户提交表单时将这些路径信息保存到数据库。然而,如果用户在上传图片后取消了表单提交,服务器上已经存在的图片资源就会造成...
1. **伪 AJAX 上传**:jQuery Uploader 通过模拟 AJAX 请求,使得文件上传过程在后台进行,不会中断页面的其他操作,用户可以继续浏览页面而不必等待文件上传完成。 2. **进度条显示**:支持实时显示文件上传进度,...
【增加】字段类型为表单类型时,增加文件上传和多行文本框 【增加】为ckeditor编辑器增加多图上传按钮 【增加】采集时,字段内容为空时,可以不采集此条内容。 【修复】百度编辑器上传漏洞。 【增加】栏目自由...
【增加】字段类型为表单类型时,增加文件上传和多行文本框 【增加】为ckeditor编辑器增加多图上传按钮 【增加】采集时,字段内容为空时,可以不采集此条内容。 【修复】百度编辑器上传漏洞。 【增加】栏目自由...
5.加强前台提交表单信息的安全过滤 6.修复几个细节BUG 2014年04月30日 V2.84更新包(推荐升级) 1.修复安装向导配置时对数据库字符过滤不严存在入侵漏洞 2.修复后台模板样式文件字符过滤不严存在入侵漏洞 3.修复...
此外,还会处理表单提交事件,使用AJAX将表单数据无刷新地发送到服务器进行审核。 总的来说,这个项目展示了如何结合JavaScript和JQuery库,创建一个功能完善的、用户体验良好的企业开户审核表单。通过合理的DOM...
8. **表单数据接口**:`FormData`对象用于处理表单数据,可以用于AJAX提交,方便构建异步提交的表单。 9. **Geolocation API**:HTML5的地理位置API允许获取用户的地理位置信息,可以在注册或联系人表单中加入位置...