客户端JavaScript Ajax

本文深入讲解了HTTP协议的基础知识及工作原理,包括请求与响应过程、状态码含义等,并详细介绍了Ajax技术及其在异步数据交换中的应用优势,涵盖了XMLHttpRequest对象的创建、配置与使用方法。

创建: 2017/10/21

完成: 2017/10/23
 
【TODO】
对Ajax收发各类型数据制作模板
补充跨域通信(cross origin) p457
 HTTP通信
 HTTP  超文本传输协议(HTTP,HyperText Transfer Protocol)
 HTTP通信 客户端发送: 请求信息
 服务器端发送: 响应信息
 请求信息 请求行: GET http://www.sample.sample HTTP/1.1
 head: Host: sample.sample这样【域名:内容】
 信息主体: 请求信息

 请求行 GET http://www.sample.sample HTTP/1.1
 GET 方法
 GET,POST
 http://www.sample.sample URL
 HTTP/1.1 HTTP的版本 
  
 响应信息  head和响应主体和上面一样
 响应行: HTTP/1.1 200 OK
 响应行 HTTP/1.1 200 OK
 HTTP/1.1 HTTP版本
 200 状态码 
 OK 附加信息 
  
 成功 200 OK 
 客户端错误 401 没有认证
 403 接入被禁止 
 404 找不到请求的资源 
 408 请求超时 
 服务器端 500 服务器内部错误 
 503 服务暂时不可用 
   
   
   
 Ajax
 优点 .处理高速,通信量少
 .异步处理
 .不跳转页面,渲染快
  AJAX即“Asynchronous JavaScript  + XML
 XMLHttpRequest
  Ajax通过XMLHttpRequest Obejct来进行数据通信
 处理流程 
  生成XMLHttpRequest Obeject
  登陆请求的方法(method) 
  发送请求,开始通信 
  
  
 生成XMLHttpRequest
 对象
 var req = new XMLHttpRequest();
 XMLHttpRequest自带对象
 readyState
 只可读
 HTTP通信的状态 
 0 为初始化: 没有呼出open 
 1 读取中: 呼出了open, 还没呼出send 
 2 读取完成: 呼出send, 还没收到响应 
 3 接收响应中:  以获取response和head
                   还没接收信息主体
 4 接收完成: 已获取所有响应信息
 response
 只可读
 获取响应内容
 responseText
 只可读
 以文本形式获取响应内容 
 responseType
 可读写
 获取/设定响应的类型 
 
 DOMString "string"
 默认值
 JSON Object "json" 
 ArrayBuffer "arraybuffer"
 带类型的数组 
 Blob "blob" 
 Document "document"
 HTML的Document 对象 
  
  
  
  
  
 responseXML
 只可读
 以XML对象形式获取响应内容 
 status
 只可读
 获取对于请求的HTTP状态码
 成功 200 OK 
 客户端错误 401 没有认证
 403 接入被禁止 
 404 找不到请求的资源 
 408 请求超时 
 服务器端 500 服务器内部错误 
 503 服务暂时不可用 
   
   
   
 statusText
 只可读
 获取对于HTTP状态码的补充信息 
 timeout
 可读写
 获取/设定请求的上线时间(到时间自动终止请求)
 单位: 毫秒ms 
 withCredentials
 可读写
 对于cross origin 通信是否使用认证
 true/false
 onreadystatechange
 可读写
 readState的值改变时回调的事件句柄 
 ontimeout
 可读写
 请求超时时候回调的事件句柄 
  


  XMLHttpRequest自带方法
 abort() 终止现在进行的异步通信(非同期通信)
 open(...) 初始化HTTP请求
 send(data) 发送HTTP请求 
 setRequestHeader(header, value) 增加header
 getAllResponseHeader()
 send(...)成功才有效
 获取收到的所有响应的response 
 getResponseHeader(header)
 send(...)成功才有效
 获取指定响应header 
  
  
  
  

 XMLHttpRequest事件句柄
 readystatechange 状态变化时
 abort 处理被取消时 
 error 请求失败时 
 loadend 不管处理有没有异常,处理完成时 
 load 请求成功,接收到响应时 
 loadstart 发送请求后 
 progress 发送/接收数据时 
 timeout 超时自动终止时 
  
  
 定义和服务器通信的处理  两种 
   req.onreadystatechange = function () {...};
  req.addEventListener("readystatechange", function() {...}); 
  
  
 初始化请求   req.open(method, url [,async [,user [,password]]]);
 method HTTP方法
 "GET" "POST"
 url 请求的url
 async 可以省略, 默认true
 是否异步通信 
 user 认证时候的用户名
 可以省略(需要的时候指定) 
 password 认证时候的密码
 可省略
 发送请求
 发送GET
 send不带参数 req.send(null);
 如果要发送请求参数 url的末尾添加请求字符串

  末尾加上"?"
  变量形式 名称=值
  多个变量 "&"连接
  用encodeURIComponent方法转换字符
  req.open("GET", "example.com?a=1&b=2"); 
  


发送POST
 可发送内容 
 url请求字符串 需要设定
req.setRequestHeader("content-type", "application/x-www-form-urlencoded")
 表单数据 FormData 
 字符串 DOMString 
 二进制数据  ArrayBufferView
BlobObject
File Object
  Blob
 Document 
  
  
  
  
  
  
  
  
  
  
  
 读取响应信息
 准备 发送send前设定
 req.requestType = "json";

# TODO 对Ajax收发各类型数据制作模板
 发送请求,等待响应成功 
 读取JSON
 使用responseText
 req.addEventListener("load", function() {
    jsonObj = JSON.parse(req.responseText);
 });

 req.send(null);
这种不用设定requestType
读取JSON
 使用response
 req.addEventListener("load", function() {
    jsonObj = req.response;
 });

 req.responseType="json";
 req.send(null);

这种要设定requestType="json";
  
  
  
  
  
  
 cross origin 通信
 # TODO 补充跨域通信(cross origin) p457
  
  
  
  
  
  
  
  
  
 

 

转载于:https://www.cnblogs.com/lancgg/p/8281692.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值