认识Ajax

ajax 也是技术名词的缩写:
Asynchronous:异步的
JavaScript:JavaScript语言
And:和、与
XML:数据传输格式
Ajax本质:使用客户端通过HTTP请求向服务器发送请求
客户端语言:
是能够在用户设备上运行的语言:html css JS安卓IOS
服务端语言:
是在服务器运行的请言:PHP JSP python

快速入门

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <form action="1.php" method="get">
  11. <input type="text" name="name" id=""><br>
  12. <input type="submit" value="submit">
  13. </form>
  14. </body>
  15. <script>
  16. var input_e =document.getElementsByTagName('input')[0];
  17. input_e.onblur =function(){
  18. var v = this.value;
  19. //创建ajax对象
  20. var xhr= new XMLHttpRequest();
  21. xhr.onreadystatechange=function(){
  22. if(xhr.readyState==4){
  23. alert(xhr.responseText);
  24. }
  25. }
  26. xhr.open('get','1.php?name=?'+v);
  27. xhr.send();
  28. }
  29. </script>
  30. </html>

ajax对象

获取对象

通过上一节我们发现,想要使用ajax的一系列功能,我们就必须先得到ajax对象
image.png
image.png

ajax的属性和方法

属性

readyState:Ajax状态码
0:表示对象已建立,但未初始化,只是new成功获取了对象,但是未调用open方法
1:表示对象已初始化,但表发送,调用了open方法,但是未调用send方法
2:已调用send方法进行请求
3:正在接收数据(接收到一部分),客户端已经接收到了一部分返回的数据
4:接收完成,客户端已经接收到了所有数据
status:http响应状态码
200代表成功获取服务器端数据
404未找到页面等等
statusText:http响应状态文本
reponseText:如果服务器端返回字符串,使用responseText进行接收
responseXML:如果服务器端返回XML数据,使用responseXML进行接收
onreadystate change:当readyState状态码发生改变时所触发的回调函数

方法

open(method,url,async):初始化Ajax对象(打开)
method:http请求方式,get/post url:请求的服务器地址
async:布尔值,ture代表异步请求,false代表同步请求;
setRequestHeader(header,value):设置请求头信息
header:请求头名称 value:请求头的值
send(content):发送Ajax请求
content:如果是get请求时,此参数为null;如果是post请求时,此参数就是要传递的数
注意:所有相关的事件绑定必须在调用send()方法之前进行。

同步和异步

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <script>
  11. function f1(){
  12. var xhr = new XMLHttpRequest();
  13. xhr.onreadystatechange = function (){
  14. if(xhr.readyState ==4){
  15. alert(xhr.responseText);
  16. }
  17. }
  18. //true(默认) 为异步请求
  19. //false 为同步请求
  20. xhr.open('get','99.php',true);
  21. xhr.send();
  22. }
  23. function f2(){
  24. alert(2);
  25. }
  26. f1();
  27. f2();
  28. </script>
  29. </body>
  30. </html>

image.png
image.png

缓存问题

缓存的产生

当使用IE浏览器时,相同一个URL发送多次请求时,会产生缓存问题;
image.png
缓存设计的初衷是为了加快网站的响应速度;

客户端解决缓存问题

改变URL参数,解决相同URL产生的缓存问题
image.png
image.png

设置反应头解决问题

image.png

ajax发送post请求

POST请求

image.png
ajax中get和post请求的区别:

  1. 传参方式不同:

Get在地址尾部使用?拼接,多个参数使用&链接;
Post在send方法中传参,多个参数使用&链接;

  1. 请求头

Post 必须设置请求头:xhr.setRequestHeader(‘Content-type’,’application/x-www-form-urlencoded’);
get 不需要设置

  1. 参数类型

Get是只能传输简单类型;
数字、字符串Post除了数字和字符串以外还可以传输二进制数据

ajax实现无刷新上传文件

image.png
image.png
image.png

Ajax和XML

PHP生成XML

image.png

Ajax获取XML数据

image.png
image.png
image.png