a标签和form表单在浏览器中发送数据,浏览器会自动发送请求报文,但是页面就会跳转,但是在ajax,要对请求报文进行设置,不跳转页面就能向服务器发送数据。
还有:
form表单要设置name属性,这样浏览器才会把它添加在url的后面
但是ajax的get和post不用
firstDay:
1.请求报文和响应报文的组成
2.浏览器和服务器数据传输的过程
3.XMLHTTPRequest
创建异步对象
设置请求头、请求主体、请求行
回调函数onload,请求成功后响应触发
请求头如果可以省略,但是post有数据要传输的时候,要设置content-Type,而要发送的数据在send以字符串的形式key1=value1&key2=value2的形式
4.设置回调函数,获取返回数据
5.get带有数据的请求:get请求数据放在open的url里面,post请求数据放在.send里面。
6.验证用户名是否存在
7.post发送数据,需要设置请求头部
8.聊天机器人
secondDay
1.同步和异步:
同步只需要在open第三个参数设置false
同步:一件一件事情接在做
异步:多件事情同时做
2.onreadystatechange 状态改变数据
判断状态以及请求是否成功
if(xhr.readyState4 && xhr.Status200)
3.如果服务器返回多条数据,最终返回到浏览器都会拼成一条
如果返回的数据不复杂,可以用split,但是不推荐
如果返回的数据复杂,就比较麻烦了。
4. XML数据格式,但是缺点是:
解析XML,操作比较麻烦,因为要像dom元素操作那样,取出标签,取出内容。
而且数据多的话,标签也多,耗费很多内存,虽然现在没有这种情况,因为网速大大提高。
XML的文件格式,文件声明要么写,要么不写,但是写了之后要放在第一行,有一个跟标签,所有的标签都是双标签。
5. 查询天气
6. 明星切换
JSON
是一种数据格式,实质上是字符串,基本上编程语言都支持JSON格式。
语言简洁、编程语言都提供了对应转换JSON的方法,转换完基本是数组或者是对象。
用法;
对象:{}、属性名用引号,属性值也是,如果是数字,可以不用。
数组:[]
对象数组
header(“Content-type: application/json; charset=utf-8”); (可以不设置)
JSON.parse()
获取网络数据
Ajax封装
更专注于业务逻辑,关注发送请求之前和请求之后,在不同的时机(事件)来操作dom元素.
模板引擎
type不填,或者是text/javascript的话,会被解析成js,其他则不会。
dataType
正则表达式
跨域同源
JSONP
发送Ajax请求:
用XHR对象或者是Fetch函数
请求报文:
请求行:请求方式 url
请求头:主机 Cookie Content-Type
浏览器告诉后台请求体中携带数据的格式:
Content-Type :
- application/x-www-form-urlencoded => (urlencoded格式)username=haha&pwd=123
- application/json =>(JSON格式){ “username”:“haha”, “pwd”:123 }
- multipart/form-data =>用于文件上传请求
请求体:post有数据的时候就有 send()
响应报文:
响应状态行:200 404 403 500
响应头:Content-Type: text/html; charset=utf-8 text/json; charset=utf-8
Set-Cookie; 服务器生成Cookie数据返回交给服务器
响应体:html json css 图片
API分类
- restful
同一地址发送不同请求,服务器操作不一样=>取决于请求方式
- restless
后台写死=> 一个路径只对应一个操作
一般http请求与ajax请求
- 对服务器来说,没有任何区别,区别在浏览器
- 浏览器只有XHR和fetch发出的ajax请求
- 浏览器让ajax引擎(可以发挥作用的内置代码)发送请求
- 一般请求会直接显示响应数据,但是ajax是需要更新dom元素
写在一个回调函数中,用ajax引擎去调用它