【原】Ajax技术原理
主要内容:
- Ajax原理
- Ajax核心技术
Ajax是Asynchronous JavaScript and XML的简称,意思是异步的JavaScript和XML。
主要包括技术:
- web标准的XHTML+CSS
- 使用DOM(Document object model)进行动态显示和交互
- 使用xml和xslt标签进行数据交换
- 使用XMLHttpRequest与服务器进行异步数据查询和检索
- 使用JavaScript绑定
Ajax原理
Ajax核心技术
XMLHttpRequest+DOM+CSS可实现局部刷新功能,其中最核心的就是XMLHttpRequest对象。
XMLHttpRequest
XMLHttpRequest常用属性:
- readyState(0未初始化,1正在加载,2加载完毕,3交互,4完成)
- onreadystatechange(每次状态改变后触发的处理程序)
- responseText(服务器返回的数据)
- responseXML(服务器返回DOM兼容的文档数据对象)
- status(服务器返回代码,比如404——NOT FUND,200——OK)
- open(string method,string url,boolean asynch)调用服务器,第三个参数可以不填,默认ture
- send(content)发送到服务器
XMLHttpRequest的创建流程:
- 创建XMLHttpRequest对象并初始化
- 发送请求
- 服务器接受请求并处理
- 返回响应数据
- 客户端接受并处理结果
- 依据响应数据修改客户端页面内容
代码演示一下:
XMLHttpRequestDemo.js
var xmlHttp;//用于存储XMLHttpRequest对象 //创建一个XMLHttpRequest对象
function createXmlHttp(){
//根据XMLHttpRequest对象是否存在,使用不同的创建方式
if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();//Firefox、Opera支持的创建方式
}else{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式
}
} //发送请求
function sendrequest(){
createXmlHttp();
xmlHttp.open("GET","request.jsp",true);//第三个参数默认为true
xmlHttp.onreadystatechange=doinfo;//指定响应函数
xmlHttp.send(null);
} //处理返回结果
function doinfo(){ if(xmlHttp.readyState==4){//判断状态是否为4(完成)
if(xmlHttp.status==200){//判断信息已经成功返回
//处理信息
var res=XHR.responseXML.getElementsByTagName("res")[0].firstChild.data;
}
}
}
JavaScript(Java脚本)
在Ajax中,JavaScript就像是一座桥梁,将HTML与(DOM,XMLHttpRequest,css,xml)联系起来。
最常用的是JavaScript的事件,比如:
- onchange(选中区域的值发生改变触发),
- onclick(鼠标左键单击触发),
- onload(文档加载触发),
- onkeyup(键盘按下释放后触发)
DOM(文档对象模型)
它封装了对HTML、xml操作的接口。在Ajax中如果没有DOM,那么局部刷新,异步请求等操作将无法进行。
常用属性:
- nodeName节点名称
- nodeValue节点值
- parentNode父节点
- childNodes子节点
- firstChild子节点列表中第一个节点
- attributes返回元素的属性列表(仅用于元素节点)
常用的节点方法:
- createElement(elemntName)创建一个元素
- createAttribute(attributeName)创建一个属性
- setAttribute(name,value)创建一个name属性并设置为value
- getElementByTagName(elementName)返回具有指定名称元素的节点列表
- getElementById(elementId)返回具有指定Id元素的节点
CSS(样式表)
由于web开发越来越注意页面的美化效果,所以css也越来越火了,在Ajax中css同样担负美化作用。
美工人员将控制页面的样式写入一个.css后缀的文件,开发人员只需要通过一个语句便可以将样式应用进来,十分方便。
<link href="skin.css" type="text/css" rel="stylesheet" />
XML
一种可扩展的标记语言,使用语法与HTML相似,也是由标签和文本组成。
区别:
- HTML的标签是定义好的(不可私自更改),XML标签是自定义的(随便你更改)
- HTML关心文本的显示形式(颜色,大小),XML更关心文本的内容
下面直接码代码,使用XMLHttpRequest对象,将XML文档的内容获取出来并显示在页面上:
AjaxDemo.html
<html>
<head>
<!-- <meta charset="utf-8" /> -->
<title>Demo</title>
</head>
<body>
<h1>Ajax中XML的作用</h1>
<br/>
<input type="button" value="点击" onclick="sendRequest()" />
<br/>
<div id="bookinfo"></div> <script language="javascript">
var xmlHttp;//用于存储XMLHttpRequest对象 //创建一个XMLHttpRequest对象
function createXmlHttp(){
//根据XMLHttpRequest对象是否存在,使用不同的创建方式
if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();//Firefox、Opera支持的创建方式
}else{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式
}
} //发送请求
function sendRequest(){
createXmlHttp();
console.log("读取book.xml文件");
xmlHttp.open("GET","book.xml",true);//第三个参数默认为true
xmlHttp.onreadystatechange=doInfo;//指定响应函数
xmlHttp.send(null);
} //处理返回结果
function doInfo(){ if(xmlHttp.readyState==4){//判断状态是否为4(完成)
if(xmlHttp.status==200){//判断信息已经成功返回
//处理信息
var res=xmlHttp.responseXML;
var xml=xmlHttp.responseText;
alert(xml);//显示xml内容
var name=res.getElementsByTagName("name")[0].firstChild.nodeValue;
var writer=res.getElementsByTagName("writer")[0].firstChild.nodeValue;
var data=res.getElementsByTagName("date")[0].firstChild.nodeValue;
var price=res.getElementsByTagName("price")[0].firstChild.nodeValue;
var response=name+"<br/>"+writer+"<br/>"+data+"<br/>"+price;
document.getElementById("bookinfo").innerHTML=response;
}
}
}
</script>
</body>
</html>
book.xml
<?xml version="1.0" encoding="utf-8" ?>
<book>
<name>书名:《消失的地平线》(Lost horizon)</name>
<writer>作者:【英国】詹姆斯 希尔顿(James Hilton)</writer>
<date>出版日期:1933年4月</date>
<price>价格:50.00</price>
<number>出版数:10000</number>
</book>
运行效果:
需要注意的地方,就是这个xml文件和html文件得放在同一个路径下,并且部署到服务器中
这里的服务器使用的tomcat(小猫咪比较好用)
ok,就到这里。欢迎大家交流分享。
请尊重本人辛苦劳动成果
转载请注明:
https://www.cnblogs.com/1906859953Lucas/p/9416479.html
谢谢啦。
【原】Ajax技术原理的更多相关文章
- Ajax 技术原理(转)
Ajax 技术原理 2010-01-04 原文出处:http://www.nowamagic.net/ajax/ajax_AjaxPrinciple.php 在写这篇文章之前,曾经写过一篇关于AJAX ...
- Ajax技术原理小结
ajax:Asynchronous Javascript and XML 异步Javascript 和XML. 是一种创建交互式网页应用的网页开发技术. 1.0 优势: ...
- ajax 技术和原理分析
ajax所包含的技术 大家都知道ajax并非一种新的技术,而是几种原有技术的结合体.它由下列技术组合而成. 1.使用CSS和XHTML来表示. 2. 使用DOM模型来交互和动态显示. 3.使用XMLH ...
- Ajax实例OR技术原理 转自 (http://blog.csdn.net/evankaka )
摘要:AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.AJAX 是一种用于创建快速动态网页的 ...
- Ajax学习总结(1)——Ajax实例讲解与技术原理
摘要:AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.AJAX 是一种用 ...
- Ajax工作原理
在写这篇文章之前,曾经写过一篇关于AJAX技术的随笔,不过涉及到的方面很窄,对AJAX技术的背景.原理.优缺点等各个方面都很少涉及null.这次写这篇文章的背景是因为公司需要对内部程序员做一个培训.项 ...
- 关于Ajax工作原理
1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...
- Ajax技术
1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...
- Ajax工作原理(转)
1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...
随机推荐
- 浅谈由管理者角色引出的B端产品设计思考点
本文来自网易云社区 作者:任琼瑶 最近一直都在持续跟进云课堂B端的交互设计,在此期间,多多少少遇到了一些不曾遇到过的问题,虽然同是做产品设计,但B端和C端产品的确存在很多不同之处. 首先,当我们在做C ...
- Android App的破解技术有哪些?如何防止反编译?
现在最流行的App破解技术大多是基于一定相关技术的基础:如一定阅读Java代码的能力.有一些Android基础.会使用eclipse的一些Android调试的相关工具以及了解一些smali的语法规范 ...
- Android - Telephony API 1.6
SignalStrength: 1. public int getGsmSignalStrength() : GSM Signal Strength, valid values are (0-31, ...
- docker 存储驱动之 overlay2
overlay2 简介 OverlayFS是一种和AUFS很类似的文件系统,与AUFS相比,OverlayFS有以下特性: 1) 更简单地设计 2) 从3.18开始,就进入了Linux内核主线 3) ...
- Android Studio显示可视化编辑界面
选中项目,依次展开“src/main/res/layout",双击"activity_main.xml",这样右侧就有“preview”选项卡了,点击activity_m ...
- linux进程管理(一)
进程介绍 程序和进程 程序是为了完成某种任务而设计的软件,比如OpenOffice是程序.什么是进程呢?进程就是运行中的程序. 一个运行着的程序,可能有多个进程. 比如自学it网所用的WWW服务器是a ...
- CTF 介绍及杂项
CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式.CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过 ...
- 字符串模式匹配算法1 - BF和KMP算法
在字符串S中定位/查找某个子字符串P的操作,通常称为字符串的模式匹配,其中P称为模式串.模式匹配有多种算法,这里先总结一下BF算法和KMP算法. 注意:本文在讨论字符位置/指针/下标时,全部使用C语法 ...
- linux下安装nginx,centos安装nginx
初学nginx,进行简单的安装和配置. 一.依赖 openssl-fips-2.0.9.tar.gz zlib-1.2.11.tar.gz pcre-8.01.tar.gz nginx-1.8.0.t ...
- 给对象和函数添加method方法
蝴蝶书中有一个method方法,用来给函数定义方法.看了之后,想着能不能给对象也定义方法呢?. 下面的代码可以实现给函数定义方法: //Function method Function.prototy ...