创建: 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
   
   
   
   
   
   
   
   
   
 

客户端JavaScript Ajax的更多相关文章

  1. ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践

    解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头.正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现. 此处手札 供后人参 ...

  2. JavaScript 客户端JavaScript之脚本化HTTP(通过XMLHttpRequest)

    XMLHttpRequest对象的设计目的是为了处理由普通文本或XML组成的响应:但是,一个响应也可能是另外一种类型,如果用户代理(UA)支持这种内容类型的话.   大多数浏览的客户端JavaScri ...

  3. 前端--关于客户端javascript

    浏览器中的Javascript 客户端javascript就是运行在浏览器中的javascript,现代的浏览器已经有了很好的发展,虽然它是一个应用程序,但完全可以把它看作是一个简易的操作系统,因为像 ...

  4. PHP + JavaScript + Ajax 实现无刷新页面加载效果

    数据源工厂 Json生成方式1 Json生成方式2 数据搬运工 数据加工师 转换类型 加工展示 结果展示 初始页面 点击按钮之后 总结 今天这个实验的思路就是实现一个无刷新的页面加载效果.具体的思路是 ...

  5. 【转】ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践

    解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头.正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现. 此处手札 供后人参 ...

  6. 7 款基于 JavaScript/AJAX 的文件上传插件

    本文整理了7款基于JavaScript和AJAX的文件上传插件,这些插件基本上都能实现以下功能: 多文件上传 拖拽操作 实时上传进度 自定义上传限制 希望能为你的开发工作带来帮助. 1.  jQuer ...

  7. JavaScript的进阶之路(七)客户端JavaScript知识点总结

    一.客户端JavaScript主要是BOM DOM的操作和js脚本的兼容性.互用性.可访问性.安全性的应用.以及一些框架的引用. 二.BOM:浏览器对象模型 主要介绍window对象 1.定时器:se ...

  8. javascript Ajax 学习

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! AJAX是asynchronousjavascript and XML的简写,就是异步的javascrip ...

  9. JavaScript Ajax之美~

    JavaScript Ajax之美~ 曾经有一段时期,因为开发人员对JavaScript的滥用导致其遭受了一段时间的冷门时期,不被大家看好,后来,到了2005年,Google公司的很多技术都是用了aj ...

随机推荐

  1. The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk1.8.0_60\bin;C:\Windows\Sun\Jav

    启动项目自动结束,查看日志发现 [ost-startStop-1] o.a.catalina.core.AprLifecycleListener   : The APR based Apache To ...

  2. 关于DEV-c++ 运行窗口闪退的解决办法

    因为程序默认运行结束自动关闭,所以运行窗口会被秒关,反复下载了很多遍也没有解决. 上网看过许多博客后,有好多方法,总结一下: ①在return 0:前加getchar():(getchar():是得到 ...

  3. 爬虫实战(二) 用Python爬取网易云歌单

    最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...

  4. Spring Security核心类关系图

    以有限的脑力记忆无限的Knowledge,多画图,多画图,多画图. 核心类Authentication 和 GrantedAuthority AbstractAuthenticationToken 由 ...

  5. mySQL and sqoop for ubuntu

    数据的导入导出 ——MySQL & sqoop in Ubuntu 1.完成搭建hadoop集群 2.安装MySQL sudo apt-get install mysql-server mys ...

  6. 最长上升子序列的回溯 ZOJ 2432

    题目大意: 找一组最长上升公共子序列,并把任意一组满足的情况输出出来 最长公共上升子序列不清楚可以先看这篇文章 http://www.cnblogs.com/CSU3901130321/p/41826 ...

  7. [luoguP1196] 银河英雄传说(并查集)

    传送门 记录 up[x] 表示 x 上方有多少个 all[x] 表示当前连通的有多少个 find 的时候 和 合并的时候 更新一下即可 ——代码 #include <cstdio> #in ...

  8. spoj 375 树链剖分模板

    /* 只是一道树链刨分的入门题,作为模板用. */ #include<stdio.h> #include<string.h> #include<iostream> ...

  9. 你的ExcelUtil简单、高效、易扩展吗

    你的ExcelUtil简单.高效.易扩展吗 Author: Dorae Date: 2018年10月23日12:30:15 转载请注明出处 一.背景 最近接到了和Excel导出相关的需求,但是: 项目 ...

  10. 用两种方法(递归和DP)实现了青蛙跳台阶

    做了这道题目: https://www.nowcoder.net/practice/8c82a5b80378478f9484d87d1c5f12a4?tpId=13&tqId=11161&am ...