`
javaplan
  • 浏览: 54656 次
  • 性别: Icon_minigender_1
  • 来自: world
社区版块
存档分类
最新评论

简要介绍AJAX

    博客分类:
  • ajax
阅读更多

一、 AJAX定义
AJAX其实是多种技术的综合,包括JavaScript、XHTML和CSS、DOM、XML和XSTL、XMLHttpRequest.
· JavaScript 邦定和处理所有数据
· XHTML和CSS 标准化的呈现
· DOM 动态显示和交互
· XML和XST 进行数据的交换和处理
· XMLHttpRequest 异步数据读取
二、 现状与需要解决的问题
传统的Web应用采用同步方式
· 我们只需要改变页面的一小部分数据,为什么我们要重新加载整个页面呢?
· 为什么老是要用户等服务器去数据呢?
三、 为什么要使用AJAX?
使用AJAX带来的便捷:
· 减轻服务器的负担,AJAX的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器的负担。
· 无刷新更新页面,减少用户的心理和时间等待时间。
· 带来更好的用户体验
· 可以把一些服务器的工作转嫁到客户端来处理,利用客户端的闲置能力来处理,减轻了服务器和带宽的负担,可以节约空间和带宽租用成本。
· 可以调用外部数据
· 基于标准化的并被广泛使用的技术,无须下载插件和小程序。
· 进一步呈现页面和数据分离。
四、 使用AJAX改进你的设计
例1数据校验:
对于“唯一性校验”使用AJAX可以使校验请求通过XMLHttpRequest对象发送并,整个过程不需要弹出窗口或者对话框,快速又不加服务器负担。

例2按需取数据——级联菜单:
传统实现级联菜单是通过一次性将所有的数据读取出来并写入数组,然后通过JavaScript来控制子集菜单的呈现,这样可以避免每次对菜单的操作引起重载页面。
但是缺点是会出现冗余数据和浪费用户资源,特别是菜单结构复杂,数据量大情况下尤为突出。

使用AJAX的优点:在初始化页面的时候我们只读取一级菜单数据并显示,当我们选择一级菜单的某一项时,AJAX会根据一级菜单项请求相应二级菜单数据并显示。用什么取什么,用多少取多少。不会出现冗余和浪费,更新页面只需要更新需要更新的那部分页面。缩短了用户的等待时间,把浪费降到最低。

例3 读取外部数据
AJAX可以调用外部数据,例如可以对一些开发数据如xml文档和RSS文档进行二次开发,实现数据整合或者开发应用程序。

五、 AJAX的缺点
· AJAX使用了大量的JavaScript和AJAX引擎,这处决于浏览器的支持。IE5.0,Mozilla1.0和NetScape 7以上才支持。Mozilla虽然也支持,但是提供XMLHttpRequest方式不一样,所以AJAX必须测试各个浏览器的兼容性。

· 由于它只更新部分页面和不刷新整个页面,网页的后退按钮时失效的。由于视觉上不提示更新,用户在使用的时候很难分辨数据到底是旧的还是已经更新的,这需要提示信息。

· 对流媒体的支持没有FLASH和JavaApplet好。

· 对于手持设备如手机和PDA还不能很好的支持AJAX

六、 AJAX开发
AJAX应用到的技术
重点技术:JavaScript、XMLHttpRequest、DOM、XML
A 、XMLHttpRequest对象
XMLHttpRequest对象的方法:
abort 停止当前请求
getAllResponseHeaders() 返回完整的响应头部
getResponseHeader(headerlable) 返回响应头部中某项
open(“method”,”url”[,”asyncFlag”[,”usernNme”[,”password”]]]) 设置目标请求的URL等
send(content) 发送请求
setRequestHeader(label,value) 设置Header并和请求一起发送
XMLHttpRequest对象的属性:
onreadystatechange 状态改变事件触发器
readyState 对象状态
0——未初始化
1——读取中
2——已读取
3——交互中
4——完成
responseXML 返回数据的文本版本
responseText 返回数据的兼容DOM和XML文档对象
status 返回的状态码
statusText 返回的状态码的描述信息

B、 JavaScript
以前JavaScript用的最多的地方是表单数据检验。
在AJAX中,它用来操作XMLHttpRequest来跟数据库打交道。
C、 DOM 文档对象模型
供Html和XML使用的一组API,脚本语言通过DOM才可以和页面内容进行交互。
· HTML文档节点
在DOM下HTML节点被视为各种类型的Node对象。每个Node对象都有自己的属性和方法,利用这些属性和方法可以遍历整个树。
Node的常用的几种类型:

接口 nodeType类型 nodeType值 备注
Element
Text
Document
Comment
DocumentFragment
Attr

DOM对象操作整个树的时候Document是整个树的根节点。JavaScript操作HTML文档的时候document指向整个文档,<body>和<table>等代表 Element
常用Document方法:
方法 描述
createAttribute() 用指定的名字创建新的Attr节点
createComment() 用指定的字符串创建新的Comment节点
createElement() 。。。
createTextNode() 。。。
getElementById() 。。。
getElementsByTagName() 。。。

Element的常用属性:
属性 描述
tagName 标记的名字,如<p>返回的是P,HTML标记返回的都是大写

Element的常用方法:用得比较多的就getAttribute()和setAttribute()
方法 描述
getAttribute()
getAttributeNode()
getElementsByTagName()
has Attribute() 如果该元素具有指定名字的属性返回true
removeAttribute
removeAttributeNode 从元素的属性列表中删除指定Attr节点
setAttribute()
setAttributeNode()

· 使用DOM操作HTML节点:
Node对象的常用属性:
属性 描述
attributes 如果节点是Element则以NamedNodeMap形式返回元素的属性
childNodes 存放当前节点的子节点
firstChild 。。。
lastChild 。。。
nextSibling 以Node形式返回当前兄弟节点的下一个节点
previousSibling 。。。
nodeName
nodeType
pareNode

Node对象的常用方法:
方法 描述
appendChild()
cloneNode() 复制当前节点并且它的所有子孙节点
hasChildNodes() 当前节点拥有子节点,则返回True
insertBefore() 在当前节点的子节点前插入一个节点
removeChild()
replaceChild()

D、XML
用XML表述的数据和文档,可以很容易的被所有的程序共享。


AJAX开发框架:
A、 初始化对象并发送XMLHttpRequest请求
代码如下:跨浏览器
if(window.XMLHttpRequest) { //Mozilla 浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {//设置MiME类别
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) { // IE浏览器
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
注意:有些Mozilla浏览器处理服务器返回的未包含XMLMimeType,这样会出错,所以必须加上一下代码:
http_request.overrideMimeType('text/xml');

B、 指定响应处理函数
http_request.onreadystatechange = processRequest;

C、 发送HTTP请求
// 确定发送请求的方式和URL以及是否同步执行下段代码
http_request.open("GET", url, true);
http_request.send(null);

注意:如果http_request.send的参数是以Post方法发送内容,则必须先调用setRequestHeader方法设置MIME类型。
http_request. setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded”);
这时资料则以字符串的形式作为send参数。
如:name= value&anothername= anothervalue&so=on

D、 处理服务器返回信息
// 处理返回信息的函数
function processRequest() {
if (http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
alert(http_request.responseText);
} else { //页面不正常
alert("您所请求的页面有异常。");
}
}
}


一个初步的开发框架如下:
<script language="javascript">
var http_request = false;
function send_request(url) {//初始化、指定处理函数、发送请求的函数
http_request = false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest) { //Mozilla 浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {//设置MiME类别
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) { // IE浏览器
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) { // 异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例.");
return false;
}
http_request.onreadystatechange = processRequest;
// 确定发送请求的方式和URL以及是否同步执行下段代码
http_request.open("GET", url, true);
http_request.send(null);
}
// 处理返回信息的函数
function processRequest() {
if (http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
alert(http_request.responseText);
} else { //页面不正常
alert("您所请求的页面有异常。");
}
}
}
function userCheck() {
var f = document.form1;
var username = f.username.value;
if(username=="") {
window.alert("用户名不能为空。");
f.username.focus();
return false;
}
else {
send_request('sample1_2.jsp·username='+username);
}
}
</script>

 
分享到:
评论

相关推荐

    前端ajax介绍

    简单介绍Ajax

    自己用的简单封装AJAX类

    **标题解析:** "自己用的简单封装AJAX类" 指的是作者为了个人使用需求,编写了一个简化的AJAX处理类。AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术,...

    ajax使用简单demo

    通过这个简单的Ajax DEMO,你可以了解到Ajax的基本使用方法,为进一步深入学习和应用Ajax打下基础。随着前端技术的发展,现在还有Fetch API、axios等更现代、更易用的库供开发者选择,它们都基于Ajax理念,但提供了...

    最简单的AJAX

    **标题:“最简单的AJAX”** AJAX,全称Asynchronous JavaScript and XML(异步JavaScript和XML),是一种创建动态网页的技术。它允许在不重新加载整个网页的情况下,与服务器交换数据并更新部分网页内容。这种方法...

    简单的Ajax应用

    总的来说,"简单的Ajax应用"涵盖了Web开发中的重要一环,即如何利用Ajax技术实现无刷新的页面更新,提高用户交互体验。通过理解并掌握这些知识点,开发者可以构建出更高效、更友好的Web应用程序。

    简单的ajax聊天室

    最简单的ajax聊天室,适合刚学习ajax的朋友。最简单的ajax聊天室,适合刚学习ajax的朋友。最简单的ajax聊天室,适合刚学习ajax的朋友。最简单的ajax聊天室,适合刚学习ajax的朋友。

    ajax最简单例子

    总的来说,这个简单的Ajax例子展示了如何通过JavaScript与服务器进行异步通信,以及如何将返回的数据动态地更新到页面上。对于初学者来说,理解这个基本流程是学习Ajax的关键。随着深入学习,你还可以了解更多的高级...

    最简单的 ajax

    总结起来,"最简单的 Ajax" 示例展示了如何使用JavaScript和ASP构建一个基础的Ajax通信系统,允许客户端与服务器进行无刷新的数据交互。这种技术在现代Web应用中非常常见,可以提高页面的响应速度和用户体验。

    很简单的一个AJAX例子

    这个"很简单的一个AJAX例子"的标题和描述表明,我们将会探讨一个基础的AJAX应用实例,它可能包含了一个简单的JavaScript代码示例,用于向服务器发送请求并接收响应,以实现页面的异步更新。 在Web开发中,AJAX的...

    最简单的ajax html

    "最简单的Ajax HTML"可能包含以下基本结构: ```html &lt;!DOCTYPE html&gt; function makeAjaxRequest() { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState === 4 &...

    简单Ajax实例AjaxSample

    这个简单的Ajax实例“AjaxSample”旨在演示如何通过JavaScript实现异步数据交换,从而提升用户体验,减少页面刷新带来的延迟感。 在Ajax的核心概念中,有以下几个关键组成部分: 1. **XMLHttpRequest对象**:这是...

    简单AJAX jquery实现

    在这个"简单AJAX jquery实现"的项目中,我们将探讨如何使用jQuery来实现AJAX请求。 首先,我们需要了解jQuery中的AJAX核心函数`$.ajax()`. 这个函数提供了一种灵活的方式来进行异步数据请求。它的基本语法如下: `...

    一个简单的Ajax例子

    在这个"一个简单的Ajax例子"中,我们将深入探讨Ajax的核心概念、工作原理以及如何编写基本的Ajax代码。 1. **Ajax核心概念**: - **异步通信**:Ajax允许浏览器与服务器进行非阻塞通信,即用户在请求处理期间仍可...

    .net下最简单的ajax示例

    以下是一个关于如何在.NET环境下创建最简单AJAX示例的详细讲解。 首先,我们需要了解AJAX的基本工作原理。它允许浏览器在不重新加载整个页面的情况下,通过JavaScript向服务器发送异步请求并接收响应数据。这提高了...

    一个简单实现ajax的实例

    【标题】:“一个简单实现ajax的实例” Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新。这个...

    ajax的一个简单例子

    在"ajax的一个简单例子"中,我们通常会看到以下几个关键组成部分: 1. **创建XMLHttpRequest对象**:这是Ajax的核心,几乎所有的浏览器都内置了这个对象,用于与服务器进行异步通信。例如: ```javascript var ...

    prototype的Ajax介绍

    ### Prototype的Ajax介绍 #### 一、Prototype框架与Ajax **Prototype** 是一款JavaScript库,其设计目的是为了简化客户端脚本编程。它提供了一系列高级功能,使得开发人员能够更加高效地构建动态网页应用。其中,*...

    一个最简单的AJAX例子

    在压缩包中的"Ajax"文件,可能是包含了这个简单AJAX例子的源代码或者相关资源。查看这个文件可以提供更具体的实践细节,比如服务器端的响应格式、如何将数据插入到DOM中等。 总结起来,AJAX是Web开发中的重要技术,...

    msajax简单例子jsmsajax简单例子jsmsajax简单例子js

    msajax简单例子msajax简单例子msajax简单例子msajax简单例子msajax简单例子msajax简单例子msajax简单例子msajax简单例子msajax简单例子msajax简单例子msajax简单例子msajax简单例子msajax简单例子

Global site tag (gtag.js) - Google Analytics