传统的web交换缺点:
流量损失浪费时间和带宽AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 概念: ajax使网页异步刷新,在不重新加载整个页面时,对网页的局部进行刷新。 特点: 局部刷新;
ajax的优点:
局部刷新;优化了浏览器与服务器之间的传输,减少了不必要的数据返回,减少了带宽占用;ajax引擎在客户端进行,承担部分服务器的工作,减少了服务器端的压力;ajax的缺点 1.ajax不支持浏览器back按钮。 2.安全问题 AJAX暴露了与服务器交互的细节。 3.对搜索引擎的支持比较弱。 4.破坏了程序的异常机制。 5.不易调试。
XMLHttpRequest 对象 XMLHttpRequest 是 AJAX 的基础。
method:请求的类型;GET 或 POST get(获取数据) post(新建 、增加数据) put(更新、 修改数据 、 删除数据) url:文件在服务器上的位置(地址 : 远程 地址和 本地地址) async:true(异步)或 false(同步) 默认为true , 异步; false 为同步。
同步和异步的区别: 等待请求完成之后 在去执行 异步是:请求和后续代码同时执行
http.open("get","./list/data.txt");这个方法里面的参数可写可不写 ,写了是服务器传输数据 ,不写是请求数据。
http.send();send(string) 将请求发送到服务器。 string:仅用于 POST 请求
onreadystatechange responseText: 获得字符串形式的响应数据。 response和responseText 的用法一样。 readyState :存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
0: 请求未初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理中 4: 请求已完成,且响应已就绪
http.onreadystatechange=function(){ /* console.log(http.response); //数据 console.log(http.readyState);*/ //读物的状态码 0 1 2 3 4 if(http.readyState==4){ var ajax1=JSON.parse (http.responseText); //json转化字符串 // var ajax1=JSON.parse (http.response); //json转化字符串 console.log(ajax1); } }ajax同步:
意味着此时请求服务器后,JS代码不再继续执行,等待服务器返回后才继续往下执行。
ajax异步:
意味着此时请求服务器后,JS代码继续执行,不管服务器什么时候返回。
什么是回调函数?
回调函数是另外某件事结束时执行的一个函数。在Ajax中,回调函数就是服务器对一个请求对象作出响应时调用的函数。浏览器会在某个时刻”回调”这个函数。
每个HTTP请求和响应都会带有相应的头部信息,其中有的对开发人员有用,有的也没有什么用。 XHR对象也提供了操作这两种头部(即请求头部和响应头部)信息的方法。 默认情况下,在发送XHR请求的同时,还会发送下列头部信息:
Accept —— 浏览器能够处理的内容类型 Accept-Charset —— 浏览器能够显示的字符集 Accept-Encoding —— 浏览器能够处理的压缩编码 Accept-Language —— 浏览器当前设置的语言 Connection —— 浏览器与服务器之间连接的类型 Cookie —— 当前页面设置的任何 Cookie Host —— 发出请求的页面所在的域 Referer —— 发出请求的页面的URL。 User-Agent —— 浏览器的用户代理字符串
使用setRequestHeader()方法可以设置自定义的请求头部信息。 这个方法接收两个参数: 头部字段的名称 头部字段的值。 服务器在接收到这种自定义的头部信息之后,可以执行相应的后续操作。 要成功发送请求头部信息,必须在调用open()方法之后且调用send()方法之前调用setRequestHeader()。
示例:
//启动一个请求,以备发送 xhr.open("get", "example.txt", true); //异步请求 xhr.setRequestHeader("MyHeader", "MyValue"); //发送请求 xhr.send(null);调用XHR对象的getResponseHeader()方法并传入头部字段名称,可以取得相应的响应头部信息。 调用getAllResponseHeaders()方法则可以取得一个包含所有头部信息的长字符串。 示例:
var myHeader = xhr.getResponseHeader("MyHeader"); var allHeaders = xhr.getAllResponseHeaders();