JS学习笔记Day22
一、Ajax的概念
(一)Ajax是一种在无需重新加载整个网页(刷新网页)的情况下能够更新部分网页的技术
(二)Ajax的全称是Asynchronous JavaScript and XML,即异步JavaScript+XML,它并不是新的编程语言,而是几种原有技术的结合体
二、Ajax的优势
(一)无刷新更新数据
(二)异步与服务器通信
(三)前端和后端负载平衡
(四)扩展:Ajax的工作原理
1、创建Ajax对象 var xhr = new XMLHttpRequest();(IE6写法【插件】:var xhr = new ActiveXObject("Microsoft.XMLHTTP");)
兼容:var xhr = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
2、与服务器建立连接:xhr.open('GET','获取文件的url','是否异步true默认');
3、发送请求:xhr.send();
4、利用监听事件,将请求的数据通过回调函数返回
给xhr对象添加一个监听事件,状态改变事件:
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
if(xhr.status === 200){
ODiv.innerHTML = xhr.responseText;
}
}
}
扩展:
a、Onreadystatechange(状态改变事件)
1) readyState 属性:请求状态
a) 0:请求未初始化(还没有调用 open())
b) 1:请求已经建立,但是还没有发送(还没有调用 send())
c) 2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)
d) 3:请求在处理中,通常响应中已有部分数据可用了,但是服务器还不有完成响应的生成。
e) 4:响应已完成,您可以获取并使用服务器的响应了。
2) Status 属性 : 请求结果
扩展:
a) 201-206 都表示服务器成功处理了请求的状态代码,说明网页可以正常访问。
i. 200(成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
ii. 201(已创建)请求成功且服务器已创建了新的资源。
iii. 202(已接受)服务器已接受了请求,但尚未对其进行处理。
iv. 203(非授权信息)服务器已成功处理了请求,但返回了可能来自另一来源的信息。
v. 204(无内容)服务器成功处理了请求,但未返回任何内容。
vi. 205(重置内容)服务器成功处理了请求,但未返回任何内容。与 204 响应不同,此响应要求请求者重置文档视图(例如清除表单内容以输入新内容)。
vii. 206(部分内容)服务器成功处理了部分 GET 请求。
b) 300-307 表示的意思是:要完成请求,您需要进一步操作。通常,这些状态代码是永远重定向的。
i. 300(多种选择)服务器根据请求可执行多种操作。服务器可根据请求者来选择一项操作,或提供操作列表供其选择。
ii. 301(永久移动)请求的网页已被永久移动到新位置。服务器返回此响应时,会自动将请求者转到新位置。
iii. 302(临时移动)服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
iv. 303(查看其他位置)当请求者应对不同的位置进行单独的 GET 请求以检索响应时,服务器会返回此代码。
v. 304(未修改)自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。
vi. 305(使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理。
vii. 307(临时重定向)服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
c) 4XX 表示请求可能出错,会妨碍服务器的处理。
i. 400(错误请求)服务器不理解请求的语法。
ii. 401(身份验证错误)此页要求授权。
iii. 403(禁止)服务器拒绝请求
iv. 404(未找到)服务器找不到请求的网页。
v. 405(方法禁用)禁用指定的方法。
vi. 406(不接受)无法使用请求的内容特性响应请求的网页。
vii. 407(需要代理授权)此状态码与 401类似,但指定请求者必须授权使用代理。如果服务器返回此响应,还表示请求者应当使用代理。
viii. 408(请求超时)服务器等候请求时发生超时。
ix. 409(冲突)服务器在完成请求时发生冲突。
x. 410(已删除)请求的资源永久删除后,服务器返回此响应。
xi. 411(需要有效长度)服务器不接受不含有有效内容长度标头字段的请求
xii. 412(未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件
xiii. 413(请求实体过大)服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
xiv. 414(请求的 URL过长)请求的 URL( 通常为网址)过长,服务器无法处理。
xv. 415(不支持的媒体类型)
xvi. 416(请求范围不符合要求)
xvii. 417(未满足期望值)
d) 500-505 表示服务器在尝试处理请求时发生内容错误。这些错误可能是服务器本身的错误,而不是请求出错。
i. 500(服务器内部错误)
ii. 501(尚未实施)服务器不具备完成请求的功能。
iii. 502(错误网关)服务器作为网关或代理,从上游服务器收到了无效的响应。
iv. 503(服务不可用)
v. 504(网关超时)服务器作为网关或代理,未及时从上游服务器接收请求。
vi. 505(HTTP 版本不受支持)
扩展:同步和异步
a、异步:同时执行,也叫作并发
b、同步:按步骤顺序执行,一条一条执行
扩展:程序、进程和线程
程序并不能单独执行,只有将程序加载到内存中,系统为他分配资源后才能够执行,这种执行的程序称之为进程,也就是说进程是系统进行资源分配和调度的一个独立单位,每个进程都有自己单独的地址空间。所以说程序与进程的区别在于,程序是指令的集合,是进程运行的静态描述文本,而进程则是程序在系统上顺序执行时的动态活动。
三、Ajax的封装
function Ajax(url,fnSuc,fnFail){
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
xhr.open('GET',url,'true');
xhr.send();
xhr.onreadystatechange = function(){
if(xhr.readyState === 4 && xhr.status === 200){
if(typeof fnSuc === 'function'){
fnScu(xhr.responseText);
}else{
fnFail();
}
}
}
}
注:Ajax的缓存问题:当多次通过ajax方式请求服务器的数据时,如果请求的路径没有发生变化,后面的请求 会从浏览器的缓存上提数据 如果服务器的数据有更改 客户端不能及时获取浏览器的数据
四、回调函数
五、后台接口
接口 就是 后端程序为前端提供一个 路径
接口路径 : xxx.php xxx.jsp xxx.asp 含义 : 验证用户名的唯一性
接口参数 : 用户名 username
http://127.0.0.1/ajax1806/checkNameDB.php?
接口参数 : username 用户名
六、JS解析json
(一) Eval()方法:解析 JSON 数据的最常用方法是使用 javascript 的 eval()方法,代码如下 :
function toJson(str){
var json = eval(‘(‘ + str + ‘)’);
return json;
}
该方法存在性能和安全方面的问题,不建议使用。
(二) JSON.parse()方法:这种方法只支持IE8/Firefox3.5+/Chrome4/Safari4/Opera10 以上版本,这些浏览器都已经接近 W3C 标准,默认实现了 toJSON 方法。代码如下:
function toJson(str){
return JSON.parse(str);
}
扩展:将对象转成字符串 JSON.stringify()
(三) New Function 方法:代码如下
function toJson(str){
var json = (new Function(“return” + str))();
return json;
}
七、Ajax的运用
扩展:get 路径传值 传递的数据量小 速度快
post 非路径传值 传递的数据量大
JS学习笔记Day22的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- JS 学习笔记--9---变量-作用域-内存相关
JS 中变量和其它语言中变量最大的区别就是,JS 是松散型语言,决定了它只是在某一个特定时间保存某一特定的值的一个名字而已.由于在定义变量的时候不需要显示规定必须保存某种类型的值,故变量的值以及保存的 ...
- WebGL three.js学习笔记 使用粒子系统模拟时空隧道(虫洞)
WebGL three.js学习笔记 使用粒子系统模拟时空隧道 本例的运行结果如图: 时空隧道demo演示 Demo地址:https://nsytsqdtn.github.io/demo/sprite ...
- WebGL three.js学习笔记 法向量网格材质MeshNormalMaterial的介绍和创建360度全景天空盒的方法
WebGL学习----Three.js学习笔记(5) 点击查看demo演示 Demo地址:https://nsytsqdtn.github.io/demo/360/360 简单网格材质 MeshNor ...
- WebGL three.js学习笔记 创建three.js代码的基本框架
WebGL学习----Three.js学习笔记(1) webgl介绍 WebGL是一种3D绘图协议,它把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的 ...
- vue.js 学习笔记3——TypeScript
目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...
- 2019-4-29 js学习笔记
js学习笔记一:js数据类型 1:基本数据类型 number类型(整数,小数) String类型 boolean类型 NaN类型其实是一个nu ...
- 一点感悟:《Node.js学习笔记》star数突破1000+
写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...
随机推荐
- vue路由懒加载 及import
- ASP.NET MVC 5 實作 GridView 分頁
本文用 ASP.NET MVC 5 實作一個 GridView,功能包括: 分頁(paging).關鍵字過濾(filtering).排序(sorting).AJAX 非同步執行,外觀上亦支援 Resp ...
- Python 基于pykafka简单实现KAFKA消费者
基于pykafka简单实现KAFKA消费者 By: 授客 QQ:1033553122 1.测试环境 python 3.4 zookeeper-3.4.13.tar.gz 下载地址1 ...
- Vue 入门之目录结构介绍
Vue 是一套用于构建用户界面的渐进式框架,与其它大型的页面框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合.另一方面,当 ...
- java笔记----获取电脑上ip(内网ip)
private static String getHostIP(){ String tempIP = "127.0.0.1"; try { if(isIpv4(InetAddres ...
- 数字信号处理专题(2)——利用FPGA进行基本运算及特殊函数定点运算
一.前言 FPGA以擅长高速并行数据处理而闻名,从有线/无线通信到图像处理中各种DSP算法,再到现今火爆的AI应用,都离不开卷积.滤波.变换等基本的数学运算.但由于FPGA的硬件结构和开发特性使得其对 ...
- C# -- 等待异步操作执行完成的方式
C# -- 等待异步操作执行完成的方式 1. 等待异步操作的完成,代码实现: class Program { static void Main(string[] args) { Func<int ...
- springboot文件上传下载简单使用
springboot的文件上传比较简单 一.使用默认的Resolver:StandardServletMultipartResolver controller package com.mydemo.w ...
- redis 的过期策略都有哪些?内存淘汰机制都有哪些?
面试题 redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 面试官心理分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 r ...
- (light oj 1306) Solutions to an Equation 扩展欧几里得算法
题目链接:http://lightoj.com/volume_showproblem.php?problem=1306 You have to find the number of solutions ...