Ajax全解析
什么是Ajax
- Ajax基本概念
-
Ajax(Asynchronous JavaScript and XML):翻译成中文就是异步的JavaScript和XML。
从功能上来看是一种在无需重新加载整个网页的情况下能够更新部分网页的技术。
传统的网页
想要更新内容或者提交表单就要重新加载或刷新页面。使用ajax技术的网页
通过后台服务器进行少量的数据交换,网页就可以实现异步局部跟新。
Ajax出现前
Ajax技术出现之前,是一个同步交互的世界。
同步:客户端发出请求,服务端去处理,然后响应,这一段时间客户端是处在等待的状态,当服务端处理响应完成之后呢,客户端重新加载页面,如果中间信息错误那么客户端就会再次发起请求在此等待。
Ajax出现之后
Ajax出现之后世界变了 变成了异步的世界。
那我们为什么之前不使用异步呢,是因为之前少了一个对象XMLHttpRequest对象,在这个对象出现之前网页开发都是采用同步的方式,出现之后呢发现可以进行了异步的操作,这个对象是用于后台和服器之间进行数据交换,而且这个数据的交换不会重新加载整个页面,这种情况下呢实现了在不刷新页面的情况下对局部数据的更新,有了这个对象之后呢才有了Ajax的异步加载局部刷新。
Ajax的异步加载局部刷新功能的实现
1.首先第一个问题就是XHR这个对象怎么使用
1)先实例化一个XMLHttpRequest
var request = new XMLHttpRquest();
注意:现在大部分的浏览器都支持XMLHttpRequest对象和new这种方式,但是呢在IE6及以下版本的时代中呢XHR还只是ActiveXObject
解决方法:
Var request;
If(window.XMLHttpRequest){
Reuest = new XMLHttpRequest();
}else{
Request = new ActiveXObject(“Microsoft.XMLHTTP”);
}
2)请求:
在这之前我们来看一下什么事HTTP请求
是一种计算机通过网络进行通讯的规则。
是一种无状态协议,不保留连接的相关信息,
客户端向服务器发出请求,服务器响应,之后呢连接就被关闭
一个完整的HTTP请求有七个步骤
A.建立TCP连接
B.客户端向服务器发送请求的命令
C.浏览器发送请求头信息
D.服务器给出响应
E.服务器发送应答头信息
F.服务器向浏览器发送数据
G.服务器关闭TCP连接
分开来看:HTTP请求分为四个部分
HTTP请求的方法和动作(get,pos)
正在请求的URL(请求地址)
请求头(包含客户端环境信息,身份验证信息等)
请求体,请求正文。
Get请求:一般用于信息获取(http默认求求方式)
Url传参属性和值都是可见的,对所发内容大小有限制 一般在2000个字符
get请求安全的说法是因为你请求一次和请求一万次效果是一样的不会对数据造成影响。
Post请求:一般用于服务器数据修改
对所发信息没有大小限制
HTTP响应有三部分
1)一个数字和文字组成的状态吗,用来显示请求是成功还是失败
2)响应头,和请求头信息一样包含很多信息,例如服务器类型,日期时间,内容类型和长度等
3)响应体,响应正文
HTTP响应状态吗由三位数字组成,首位数字定义了状态码的类型:
1xx:信息类,表示接收到浏览器请求,正在进一步处理
2xx:成功表示用户请求被正确接受
3xx:重定向,表示没有请求成功,客户必须采取进一步的动作
4xx:客户端错误,表示客户端请求有错误404NOTFound意味着请求中所引用的文档不存在
5xx:服务器错误,表示服务器不能完成对请求的处理
通过XMLHttpRequest发送请求
1.创建 var request = new XMLHttpRquest();
2.发送请求
两个方法:
open(method,url,async),Send(string)这两种方法可以将请求发送到服务器
Request.open(get,get.php,true)
Request.Send()
Request.open(post,post.PHP,true)
Request.Send()
Request.open(post,post.php,true)
Request.setRequestHeader(‘Content-Type’,’application/x-www-form-urlencoded’)
Request.send(“name=王二狗&sex=男”);
send()中的内容是要向后台传递的参数,在get请求是通过url传递参数,所以get中send()里面的内容可以省略,post方式中不能省略,省略了之后就是无意义的请求了
setRequestHeader是用来设置请求参数的类型,form
3.获取响应
responseText:获取字符串形式的响应式数据
responseXML:
Status和statusText:以数字和文本形式返回HTTP状态吗
getAllResponseHeader():获取所有的响应报头
getResponseHeader():查询相应中的某个字段的值
在响应返回成功时得到的通知,在实际操作中要监听
readyState属性的变化,他的变化代表着服务器相应的变化
0:表示服务器请求未初始化,open还没有被调用
1:服务器连接已经建立,open已经被调用
2:请求已经被接受,接收到头部信息
3:处理中,接收到相应主体
4:请求完成,并且响应完成
Var request=new XMLHttpRequest();
Request.open(get,url,true)
Request.send();
request.onreadyState=function(){
If(request.readeyState===4&&request.Status===200){
做一些事情 request.responseText
}
}
Ajax全解析的更多相关文章
- jQuery Ajax 全解析
转自:http://www.cnblogs.com/qleelulu/archive/2008/04/21/1163021.html 本文地址: jQuery Ajax 全解析 本文作者:QLeelu ...
- jQuery Ajax 全解析(转载)
本文地址: jQuery Ajax 全解析 本文作者:QLeelulu 转载请标明出处! jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写Java ...
- jQuery Ajax 全解析(转)
<!-- .ajax div{ border: solid 1px red; } --> // <![CDATA[ $(function(){ $("#btnajax&qu ...
- jQuery Ajax全解析
jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 我们先来看一些简单的方法,这些方法都是对jQuery.ajax( ...
- jQuery Ajax 实例 全解析
jQuery Ajax 实例 全解析 jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我 ...
- javascript ajax 脚本跨域调用全解析
javascript ajax 脚本跨域调用全解析 今天终于有点时间研究了一下javsscript ajax 脚本跨域调用的问题,先在网上随便搜了一下找到一些解决的办法,但是都比较复杂.由是转到jqu ...
- 1.Google Chrome浏览器 控制台全解析
Google Chrome浏览器 控制台全解析 在Google Chrome浏览器出来之前,我一直使用FireFox,因为FireFox的插件非常丰富,更因为FireFox有强大的Firebug,对于 ...
- POST & GET & Ajax 全解
GET&POST&Ajax 全解 一.POST和GET的差别 GET:GET方法提交数据不安全,数据置于请求行.客户段地址栏可见:GET方法提交的数据限制大小在255个字符之内.參数直 ...
- Google Maps地图投影全解析(3):WKT形式表示
update20090601:EPSG对该投影的编号设定为EPSG:3857,对应的WKT也发生了变化,下文不再修改,相对来说格式都是那样,可以到http://www.epsg-registry.or ...
随机推荐
- FRM-40654 Record has been updated
该错误是由于界面上对数据进行了修改后(比如为A),将修改前的数据(B)与数据库中的数据(B)进行配不成功时报错: 首先确认Form界面是否有其他人对数据进行修改: 如果无人修改: 将数据库的数据查询出 ...
- REP-0118:can not create temporary file(无法创建临时文件)
解决办法: 查看一下注册表里面的reports_tmp 的路径 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_DevSuiteHome1 .是不 ...
- 【Android 界面效果47】RecyclerView详解
RecylerView作为 support-library发布出来,这对开发者来说绝对是个好消息.因为可以在更低的Android版本上使用这个新视图.下面我们看如何获取 RecylerView.首先打 ...
- 洛谷 P2814 家谱
题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. 输入输出格式 输入格式: 输入由多行组成,首先是一系列有关父子关系的描述,其中每一组 ...
- CVE-2017-8464 LNK文件(快捷方式)远程代码执行漏洞复现
北京时间2017年6月13日凌晨,微软官方发布6月安全补丁程序,“震网三代” LNK文件远程代码执行漏洞(CVE-2017-8464)和Windows搜索远程命令执行漏洞(CVE-2017-8543) ...
- 【js基础修炼之路】- 微任务,宏任务和Event-Loop
一段代码让你了解Event-Loop console.log(1); setTimeout(() => { console.log(2); }, 0); new Promise((resolve ...
- Arduino-舵机控制Servo
以前没有接触过硬件,因为把弄APM2.5不得不去接触arduino板.Arduino是块极易上手的控板,不像单片机,你要花费大量的时间去学习预备知识,它只要你稍微懂点C语言既能上手.对于我这种业余爱好 ...
- QT创建与调用Dll方法(包括类成员)--显式调用
看网上的好多关于QT调用Dll的方法,大部分都是调用函数的,并没有调用C++类成员的情况,即使是有,比如说: 使用Qt编写模块化插件式应用程序 Qt 一步一步实现dll调用(附源码)---(这一篇里没 ...
- Java中调用MatLab返回值
当在Java中使用MatLab函数时,由于语言语法的不同,Matlab返回多个数据时,想在Java中获取到并进行使用.查阅了网上资料,翻箱倒柜加上自己实战,得出方法如下: 如MatLab函数返回的是N ...
- POJ-2456 Aggressive cows---最大化最小值(也就是求最大值)
题目链接: https://vjudge.net/problem/POJ-2456 题目大意: 有n个牛栏,选m个放进牛,相当于一条线段上有 n 个点,选取 m 个点, 使得相邻点之间的最小距离值最大 ...