Ajax
服务器和客户端相互的过程
1 | 客户端发起请求 |
jQuery
1 | $.get() // 一般用于获取数据 |
$.get()
1 | $.get(url,[data],[callback]) |
$.post()
1 | $.post(url,[data],[callback]) |
$.ajax
1 | $.ajax({ |
form标签的属性
1 | action // 向何处发送表单数据 默认为当前页面 提交会跳转 |
利用表单做数据采集
表单提交事件
1 | onsubmit // 提交触发事件 |
阻止表单默认行为
1 | event.preventDefault() //阻止默认行为 |
jquery快速获取表单中的数据
1 | $(表单).serialize(); // 结果 键=值&键=值 必须添加name属性 |
1 | 表单.reset(); // 重置表单 |
模板引擎的好处
1 | 1. 减少了字符串的拼接操作 |
art-template
1 | 1. 原生版本 ---可以自定义js---更加灵活强大 |
art-template的使用
1 | 1. 导入art-template |
标准语法-输出
1 | {{value}} |
过滤器
1 | // 更偏向加工,处理 |
正则与字符串操作
exec
1 | // exec() 函数用于检索字符串中的正则表达式的匹配(有则返回 无则返回null) 返回伪数组('完全匹配的值','索引','被匹配的字符串','命名捕获组的信息') |
分组
1 | // 正则表达式中()包起来的内容表示一个分组,可以通过分组来提取自己想要的内容 (只会提取第一个) 返回伪数组 |
replace函数
1 | str.replace('被替换的','替换成的') |
多次replace
1 | var str = '<div>{{name}}今年{{age}}</div>'; |
replace替换为真值
1 | var data = {name:'张三',age:20}; |
实现简易的模板引擎
1 | // 定义模板结构 |
HTTP协议(开发)
1 | 请求 request |
XMLHttpRequest的基本使用
1 | // 使用xhr发起get请求 |
使用xhr发起带参数的get请求
1 | xhr.open('get','http://.../...?id=1&name=zangsan); |
如何对url进行编码与解码
1 | encodeURI() // 编码的函数(不会编码分隔字符 ?=&) |
数据交换格式
1 | XML和JSON和urlencoded // JSON常用 |
JSON
1 | JSON是一种轻量级的文本数据交换格式 js对象表示法 |
序列化
1 | JOSN.stringify() // 序列化 把对象或数组转换成字符串 |
封装自己Ajax函数
1 | function ajax(options){ |
XMLHttpRequest Level2的新特性
1 | 1. 可以设置HTTP请求的时限 |
设置HTTP请求时限
1 | // 应用场景 等待响应需要保持连接会占用内存资源,如果超时就不等了 |
FormData对象管理表单数据
1 | // 接口文档上标注了要使用FormData才使用 get不能用FormData |
上传文件
1 | 1. 定义UI结构 |
计算文件上传进度
1 | var xhr = new XMLHttpRequest() |
监听上传事件
1 | xhr.upload.onprogress // 上传中 |
jquery实现文件上传
1 | var files = $('#file1')[0].files |
jquery loading效果
1 | // 请求发送时调用 |
axios
1 | // 专注网络数据请求的库 |
get请求
1 | axios.get('url',{params:{/*参数*/}}).then(function(res){ |
post请求
1 | axios.post('url',{/*参数*/}).then(function(res){ |
用axios发起请求
1 | axios({ |
axios全局配置
1 | // 配置公共的请求头 |
axios拦截器
1 | // 1. 请求拦截器 |
同源
1 | // 如果两个页面的协议,域名和端口都相同,则两个页面具有相同的源。(端口默认80) |
同源策略
1 | // 是浏览器提供的一个安全功能 |
跨域
1 | // 两个页面的协议,域名和端口任何一个或多个不相同 |
浏览器对跨域请求的拦截
1 | // 浏览器允许发起跨域请求,但是,跨域请求回来的数据,会被浏览器拦截(浏览器接收到了数据),无法被页面获取到! |
实现跨域数据请求
1 | //JSONP :出现的早,兼容性好(兼容低版本IE)。是前端程序员为了解决跨域问题,被迫想出来的一种临时解决方案。缺点是只支持 GET 请求,不支持 POST 请求。 |
JSONP
1 | // JSONP ( JSON with Padding ) 是 JSON 的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。 它不属于Ajax请求,但它可以模拟Ajax请求 |
使用JSONP解决同源限制问题
1 | 1. 将不同源的服务器请求地址写在script标签的src属性中 |
jsonp的缺点
1 | // 由于 JSONP 是通过 <script> 标签的 src 属性,来实现跨域数据获取的,所以, JSONP 只支持GET 数据请求,不支持 POST 请求。注意: JSONP 和 Ajax 之间没有任何关系,不能把 JSONP 请求数据的方式叫做 Ajax,因为 JSONP 没有用到XMLHttpRequest 这个对象 |
使用jquery发起jsonp请求
1 | $.ajax({ |
自定义参数及回调函数名称
1 | $.ajax({ |
jQuery 中JSONP 的实现过程
1 | // jQuery 中的 JSONP ,也是通过 <script> 标签的 src 属性实现跨域数据访问的,只不过, jQuery采用的是动态创建和移除标签的方式,来发起 JSONP 数据请求。 |
防抖
1 | // 防抖策略是当事件被触发后,延迟 n 秒后再执行回调,如果在这 n 秒内事件又被触发,则重新计时。 |
防抖的应用场景
1 | // 用户在输入框中连续输入一串字符时,可以通过防抖策略,只在输入完后,才执行查询的请求,这样可以有效减少请求次数,节约请求资源; |
实现输入框的防抖
1 | 1. 防抖动的 timer |
缓存搜索的建议列表
1 | 1.定义全局缓存对象 |
token的机制
1 | // 为什么要使用token |
节流阀
1 | // 节流策略( throttle ),顾名思义,可以减少一段时间内事件的触发频率。 |
编程思想
1 | // 我们可以接受定义的复杂,但是不能接受调用的复杂 |
一些接口
1 | // 地址 参数 方式 返回值 |
1 | referer 告诉服务器当前网页是从另外哪个网页过来的 |
HTTP协议
1 | // http协议是一个应用层的协议 |
TCP/IP协议
1 | // TCP/IP协议不是单指一个协议,是一个协议簇(是一堆协议),其中最重要的两个协议分别是是tcp协议和ip协议,因此我们采用TCP/IP协议来统称整个协议簇 |
IP地址和端口号的作用
1 | // ip地址 相当于是门牌号 可以帮我们找到特定的服务器(电脑) |
TCP协议
1 | // 面向连接的 和打电话是一样的 |
UDP协议
1 | // 和发短信是一样的 |
面试题
1 |
RESTful 风格的API接口
1 | // GET: http://www.example.com/users 获取用户列表数据 |
其他
1 | //$.ajax请求 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 erha blog!