你知道在浏览器环境下JavaScript能够利用到的提交/请求数据的方式有哪些吗?这些方式各自有什么特点呢?在什么情况下使用呢?让我们一起来整理一下。
基础知识
建议大家先看完这几篇文章,了解一下基础知识
XMLHTTPRequest
XMLHTTPRequest是最常见的,也是很多框架封装的数据请求方法的底层实现,如我们最熟悉的各类框架的Ajax方法。
详细文档:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
Form Action
可以利用Form(表单)来提交/请求,这太常用,于是我们习以为常了。其实这也是JavaScript能够利用到的提交/请求数据的方式之一。
详细文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form
文档有意思的,常被新手忽略的的target属性,可配合iframe实现无刷新地与服务器交互(跨域)
A Href
既然Form Action也算,那a标签的href也算吧,233
详细文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a
Script Src
没错,这个也算。JSONP就是利用script标签的src来请求数据,然后等待数据请求完毕后从script标签中读取数据,巧妙地解决了跨越的问题。一些AMD JavaScript框架也用script标签来异步加载模块,如requirejs。一些JavaScript模版也会用script标签来加载模版,如artTemplate。
详细文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
Link Href
没错我说的就是这些。脑洞开起来,一起整理出来。
详细文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link
Img Src
这个也可以用来数据,一般是图像数据。JavaScript可以监听图像加载后的响应。可以拿到图像像素数据,可以配合Canvas做复杂图像处理,不过有跨域限制。
详细文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img
Audio Src
和上面的差不多。
详细文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio
对于audio底层处理有兴趣的可以参考这篇
Video Src
和上面的差不多。
详细文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video
frame& iframe Src
差点忘了这两个兄弟,虽然哥哥frame已经基本没人用了。
详细文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
Fetch
这个新出的玩意儿,只有少数高版本浏览器支持。本质与XMLHTTPRequest不同。但有的框架为了支持更多平台,统一API,对不支持Fetch的浏览器提供底层XMLHTTPRequest实现的支持。
详细文档:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
PS: 以上大多数情况下都是用到基于HTTP协议的功能,少数有用到file协议和ftp协议的。
WebSocket
WebSocket则提供给我们机会让我们利用TCP协议与服务端建立长链接,持续通信。
详细文档:https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
WebRTC
越来越厉害了,233
详细文档:https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API
还有吗?欢迎补充&纠错
补充一点,注意区分get跨域和post跨域
待更新
fetch的源码,原理相关
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。