Ajax技术基础
对于AJAX技术,感觉以前虽然用过但是对于AJAX没有一个清晰的认识,今天专门总结一下,希望掌握的更加牢固吧!
一,什么是AJAX?
AJAX通常被叫做异步刷新技术,其实他也是可以同步的。主要都用于异步访问服务器。
在通常情况下,我们的页面都是静态的,如果想要与服务器交互,我们可以通过一系列的手段来向服务器发送请求,并将返回的信息展示在页面上,但是通常需要刷新页面,如果不停的请求就需要不停的刷新整个页面,这对于客户而言带来很大的麻烦,尤其是网速很慢的情况,本来只需要更改页面一小点地方的信息,却要刷新整个页面,如果页面有上万的图片,这一次刷新的代价就太大了。所以引进了AJAX技术,可以保证页面只刷新你想要的内容。
其实实现异步刷新的方式不止AJAX技术,还有iframe嵌入式框架,在一个网页嵌套另一个网页的内容,只用刷新iframe的内容(几乎被ajax取代)。
二,AJAX实现原理
AJAX实现过程其实分为四个步骤:
①创建AJAX对象
②连接服务器
③发送请求
④接受请求消息并处理
我们来一步一步的解释响应的实现代码。
1)如何创建AJAX对象?
这里其实有一个兼容性的麻烦,在非IE6的浏览器中AJAX的对象就是XMLHttpRquest对象,而在IE6中是没有定义这个对象的,需要通过内置的ActiveXObject插件产生AJAX对象。
创建AJAX对象代码:
var oAjax=new XMLHttpRequest();//非IE6浏览器 var oAjax=new ActiveXObject("Microsoft.XMLHTTP");//IE6浏览器
所以为了达到兼容性创建的代码一般这样写:
if(window.XMLHttpRequest){//值得注意的是这里要写window.XMLHttpRequest
var oAjax=new XMLHttpRequest();//非IE6浏览器
}
else {
var oAjax=new ActiveXObject("Microsoft.XMLHTTP");//IE6浏览器
}
解释一下为什么要写成window.XMLHttpRequest,而不能写成XMLHttpRequest。
在js中
用没有定义的变量---报错
用没用定义的属性---undefined
使用window.XMLHttpRequest就相当于XMLHttpRequest成了属性,就不会报错。
2)创建好了对象,接下来需要连接服务器,如何连接服务器呢?
其实很简单,只用调用AJAX对象的open方法。
oAjax.open('GET|POST','URL',true|false);//连接服务器
参数很简单就三个,前两个一看就知道了,说下第三个
第三个标志:是同步传输还是异步传输,一般肯定选择true,也就是异步传输了。
另外说下在JS中同步和异步的区别(与生活中同步异步刚好相反):
同步:就是事情需要一步一步的做(当第一个请求发送给服务器,需要等待服务器返回消息,在发送第二个)
异步:事情可以一起做(不用在意前面的请求是否返回消息,直接可以发送请求)
3)连接了服务器,接下来当然是发送请求了,如何发送呢?
发送请求也很简单,直接调用AJAX对象的send方法。
oAjax.send();
4)发送了请求,接下来是接受服务器的返回信息,解析并处理,如何接受呢?
接受服务器返回的消息,其实需要分几个过程。
发送请求到服务器,服务器是否成功的交互了呢?其实每次ajax与服务器进行交互,会触发一个onreadystatechange的事件(注意是事件),既然是事件就需要编写对应的处理函数。
oAjax.onreadystatechange=funcion (){ if(oAjax.redystate==4){//信息读取完成,但是不一定成功读取
if(oAjax.status==200){//HTTP状态码,成功的返回
//处理返回消息
alert(oAjax.responseText);//弹出返回信息
}
}
}
三,使用AJAX
一般AJAX的函数存在三个参数。
在js文件中写入
function ajax(url, fnSucc, fnFaild)
{
//1.创建Ajax对象
if(window.XMLHttpRequest)
{
var oAjax=new XMLHttpRequest();
}
else
{
var oAjax=new ActiveXObject("Microsoft.XMLHTTP");
} //2.连接服务器
//open(方法, 文件名, 异步传输)
oAjax.open('GET', url, true); //3.发送请求
oAjax.send(); //4.接收返回
oAjax.onreadystatechange=function ()
{
//oAjax.readyState //浏览器和服务器,进行到哪一步的状态码
if(oAjax.readyState==4) //读取完成
{
if(oAjax.status==200) //成功
{
fnSucc(oAjax.responseText);
}
else
{
if(fnFaild)
{
fnFaild(oAjax.status);
}
//alert('失败:'+oAjax.status);
}
}
};
}
在调用ajax的文件中写入调用的方法
ajax(url,fnsucc,fnfailed);//调用ajax函数 //url是请求的url
//fnsucc是得到服务器返回信息的处理函数,需要自己编写。
//fnfailed是未成功的到服务器返回信息的处理函数,需要自己编写,可以不写。
function fnsucc(参数){
//处理代码
} function fnfailed(参数){
//处理代码
}
大概就这些,以后学到新的知识,会逐渐补充...
Ajax技术基础的更多相关文章
- ajax技术基础详解
一.概述 1.什么是ajax 可以与服务器进行[异步]交互的技术,浏览器无需刷新 2.什么时候出现ajax? -- XMLHttp 微软 1999年微软公司发布IE5版本,内嵌了ajax技术 什么时候 ...
- 《所用到的AJAX技术基础》
来自百度网页,w3cshool网页:AJAX = Asychronous JavaScript and XML,翻译成中文为:异步的JavaScript XML. 异步的意思就是不重新加载整个页面,后 ...
- Java基础96 ajax技术的使用
本文知识点(目录): 1.ajax的概念 2.使用ajax技术获取服务端的数据_实例 3.使用ajax技术检查用户名是否已存在_实例 4.使用ajax技术验证登录页面的用户名和密码_实例 ...
- Ajax技术原理小结
ajax:Asynchronous Javascript and XML 异步Javascript 和XML. 是一种创建交互式网页应用的网页开发技术. 1.0 优势: ...
- Ajax 学习 - 基础学习
<AJax - Async Javascript and xml - 异步的JavaScript和XML> 一.基础认识 AJax技术的目的:实现页面无刷新数据动态更改 优点: + 不需 ...
- Ajax 技术一
一.Ajax概述 1.历史起源 1998年,微软公司Outlook Web Access研发小组在当时的IE浏览器中集成了一种技术,可以在客户端无刷新的前提下向服务器端发送Http请求,这门技术称之为 ...
- JAVA EE 项目经常使用知识 之AJAX技术实现select下拉列表联动的两种使用方法(让你真正理解ajax)
ajax 下拉列表联动的使用方法. ajax的定义: AJAX 是一种用于创建高速动态网页的技术. 通过在后台与server进行少量数据交换,AJAX 能够使网页实现异步更新.这意味着能够在不又一次载 ...
- JavaWeb开发技术基础概念回顾篇
JavaWeb开发技术基础概念回顾篇 第一章 动态网页开发技术概述 1.JSP技术:JSP是Java Server Page的缩写,指的是基于Java服务器端动态网页. 2.JSP的运行原理:当用户第 ...
- JAVA EE 项目常用知识 之AJAX技术实现select下拉列表联动的两种用法(让你真正理解ajax)
ajax 下拉列表联动的用法. ajax的定义: AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的 ...
随机推荐
- Spring4学习笔记-AOP(基于配置文件的方式)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://shamrock.blog.51cto.com/2079212/1557743 引 ...
- 模块 - json/pickle/shelve/xml/configparser
序列化: 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化: 有种办法可以直接把内存数据(eg:10个列表,3 ...
- win7查看某个端口被占用的解决方法
1.开始---->运行---->cmd,或者是window+R组合键,调出命令窗口. 2.输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口,比如是491 ...
- sql 基础查询集锦
授权 GRANT All ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED ...
- Mysql学习笔记—视图
1.什么是视图 视图(View)是一种虚拟存在的表.其内容与真实的表相似,包含一系列带有名称的列和行数据.但是视图并不在数据库中以存储的数据的形式存在.行和列的数据来自定义视图时查询所引用的基本表,并 ...
- redis实现cache系统原理(五)
1. 介绍 cache就是人们所说的缓存.我们这里所说的cache是web上的.对用户来说,衡量一个网站是否具有良好的体验,其中一个标准就是响应速度的快慢.可能网站刚上线,功能还较少,数据库的记录也不 ...
- rtsp over udp
#include <stdio.h> #include <netinet/in.h> #include <sys/socket.h> #include <st ...
- VGA显示
VGA控制器的编写主要是了解VGA的显示标准和时序,如1024X768@60Hz,确定时钟频率(65MHz=1344X806X60),列像素时间等于时钟周期,扫描从左到右.从上到下(类似于电视扫描PA ...
- 错误:为 Web 项目“XXX”配置的 URL“http://localhost/”的网站同时存在于本地 IIS Web 服务器和 IIS Express Web 服务器上。您需要使用 IIS 管理器在 IIS 中更改此网站的绑定。
解决方法: 用记事本打开MVC网站的项目文件(*.csproj),滚动条拉到最下,找到这两个节点: <UseIIS>True</UseIIS> <AutoAssignPo ...
- slf4j-api、slf4j-log4j12以及log4j之间什么关系?
几乎在每个jar包里都可以看到log4j的身影,在多个子工程构成项目中,slf4j相关的冲突时不时就跳出来让你不爽,那么slf4j-api.slf4j-log4j12还有log4j他们是什么关系?我把 ...