这里包含两个知识点,通过AJAX来上传文件+跨域问题
跨域问题的解决方案:W3C标准CORS(Cross-Origin Resource Sharing)规范,在服务器端使用filter来设置response头的跨域相关属性。
Chrome在发起AJAX请求时,会检查请求是否跨域,如果是,它会先发起一个OPTIONS类型的请求来向服务器查询跨域权限。比如你的AJAX是一个跨域的POST请求,那么在真正向服务器发送该POST请求之前,会先触发一个OPTIONS请求,该请求的头里包含以下属性:
Access-Control-Request-Headers:accept, content-type Access-Control-Request-Method:POST
如果服务器返回的response头里包含类似这样的信息,那么就表示服务器接受这个跨域请求:
Allow:GET, HEAD, POST, TRACE, OPTIONS
然后真正的POST跨域请求才会被发送。
服务器端代码使用的是第三方的cors-filter-1.3.2.jar,java-property-utils-1.6.jar
通过AJAX来发起上传文件的POST请求:
HTML代码
<form enctype="multipart/form-data" > <input name="file" type="file" /> <input type="button" value="Upload" /> </form>
JS代码以jQuery为例,在调用$.ajax()方法时,传入一个FormData对象,并且将contentType和processData设为false
var formData = new FormData($('form')[0]); $.ajax({ url: '你的跨域URL', //Server script to process data type: 'POST', //Ajax events //beforeSend: beforeSendHandler, //success: completeHandler, //error: errorHandler, // Form data data: formData, //Options to tell jQuery not to process data or worry about content-type. cache: false, contentType: false, processData: false });
测试在Chrome 35和Firefox 30上通过。
后续问题(待更新):1. IE8不支持FormData,如何实现? 2. 服务器端代码替换成Apache标准的代码。3. 跨域携带cookie(设置withCredentials?)4. 服务器端开放所有对所有域的AJAX请求,安全性问题?
相关推荐
10. **进度指示**:对于大文件传输或长时间运行的任务,开发者可能会添加进度指示器,通过XMLHttpRequest的progress事件跟踪上传或下载进度。 通过这个练习,开发者不仅锻炼了JavaScript和服务器端编程能力,还了解...
这个元素的`id`属性将用于在JavaScript中获取用户选择的文件: ```html ()">上传 ``` 然后,在JavaScript中,我们可以监听按钮的点击事件,并使用`FormData`对象来构建提交的数据。`FormData`对象允许我们将...
7. **文件上传**: 通过AJAX,可以实现文件的异步上传,显示进度条,甚至预览上传的图片或文档。 8. **错误处理**: AJAX请求失败时,可以捕获错误并给出用户友好的提示,提升用户体验。 9. **跨域请求**: AJAX支持...
**Ajax(Asynchronous JavaScript and XML)是...总结来说,这个"关于ajax练习的入门级实例"会涵盖上述基本知识点,通过实际操作,初学者可以快速掌握如何使用Ajax实现页面的无刷新交互,为后续的Web开发打下坚实基础。
该应用的核心组成部分包括以下文件: 1. **assets**:这是一个包含CSS样式表和JavaScript脚本的目录。CSS文件用于定义界面的样式,如按钮、输入框等元素的外观;JavaScript文件则包含了处理AJAX请求和反馈的逻辑,...
4. **异步加载与进度条**:实现文件上传时的进度条功能,展示Ajax请求的进度。 通过以上四天的学习,你将能够熟练掌握Ajax的基本原理和应用,从而在实际项目中提高Web应用的性能和用户体验。在MyEclipse环境下,你...
AJAXpj.rar是一个压缩包文件,它包含了与AJAX(Asynchronous JavaScript and XML)相关的项目或练习,适合学习和深入理解AJAX技术。AJAX是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术,极大地提高...
6. XHR2与Fetch API:现代浏览器已经支持了XHR2,提供了更多的特性,如支持文件上传、跨域请求等。Fetch API是更现代的替代方案,提供了Promise接口。这部分代码可能展示了如何利用这些新特性。 7. JSONP和CORS:...
+ mybatis-plus + 令牌token + 全局异常管理 + 统一返回数据拦截 + 自定义异常 + 处理ajax跨域请求 + Feign + 熔断机制 + eureka + 单元测试(controller、service、mapper层) + redis集群集成练习 + redis操作练习 ...
4. MySQL企业练习:通过实际案例提升数据库操作能力。 5. InnoDB与MyISAM的区别:理解两种存储引擎的优缺点,如事务支持、行级锁定等。 三、PHP操作数据库 1. CRUD操作:Create(创建)、Read(读取)、Update...
2. JavaScript文件:实现了Ajax请求的逻辑,可能使用了jQuery、fetch API或者原生XMLHttpRequest对象。 3. JSON文件:可能作为模拟服务器响应的数据源,供Ajax请求获取和解析。 4. CSS文件:用于美化和布局HTML页面...
9. **文件上传/下载**:可能与PHP的文件系统操作相关,如上传文件到服务器或下载服务器上的文件。 这个项目可能是为了帮助学生或开发者掌握如何使用PHP处理服务器端逻辑,以及如何通过AJAX实现页面的无刷新交互。...
用户可以通过上传文件选择器将Excel文件导入到网页。 2. **数据处理**:`SheetJS` 或 `xlsx` 库可以将Excel文件转换为JSON格式,便于JavaScript操作。我们需要解析这些数据,包括题目、选项、答案等,并存储在合适...
Django获取多个数据以及文件上传 Django的CBV和FBV Django模板语言循环字典 Django基于正则表达式的URL Django对应的路由名称 Django路由分发 DjangoORM基本创建基本类型以及生成数据库结构 DjangoORM使用mysql注意 ...
8. **文件上传与下载**:利用Servlet和JSP实现文件的上传和下载功能,理解文件流的处理。 9. **AJAX(Asynchronous JavaScript and XML)**:结合JavaScript和XML实现异步交互,提升用户界面的响应速度。 10. **...
文件发送接收可能利用File API来读取、处理用户选取的文件,并通过WebSocket将文件数据分块发送到服务器。同时,前端会显示进度条反馈,这可能使用了Promise或async/await来控制异步操作,实现断点续传功能意味着...
9. **FormData**:在发送表单数据或上传文件时,可以使用FormData对象。它可以将键值对或文件对象包装成一个数据块,方便通过HTTP发送。 10. **响应式编程**:现代Web应用经常使用RxJS或其它响应式库,通过流处理...
01 selctors实现文件上传与下载 02 html的介绍 03 html文档树的概念 04 meta标签以及一些基本标签 05 img标签和列表标签 06 form表单之input标签 07 通过form向server端发送数据 08 form表单之select标签 09 table...
除此之外,本书还提供了大量实例源代码,这些代码覆盖了常见的ASP.NET应用场景,包括用户注册、登录验证、文件上传下载、邮件发送等。通过这些实例,读者可以动手实践,巩固理论知识,提升实际开发能力。 配合PPT...
- **FormData**: 在发送表单数据或上传文件时,`FormData`对象非常有用。它可以将表单数据封装成适合HTTP请求的格式。 - **RESTful API通信**: REST(Representational State Transfer)是一种常见的Web服务设计...