或许,很多人都会认为已经学过了的技术没必要再回顾,也懒得去实践...这种心理问题我想你应该也有过,懒惰是人之本性嘛,至少我曾经是。
好了,木木就让小伙伴们来瞧瞧我最近学到的东西,学的不好不要见怪哟。
注解:知识源于积累,分享。希望看到木木的献丑大家不要惊慌,木木会更快更正.....
Ajax:
Ajax到底有什么作用叻?
1.通过无刷新页面与服务器交互数据来提高客户端体验;
2.通过其异步调用机制增加web程序性能,降低服务器压力;
首先,Ajax并不是很新的技术,它是一系列技术的整合。可以实现局部刷新页面。 (改变页面中某个块的值,不会刷新整个页面)。
Ajax的组成:Asynchronous JavaScript And XML。
注解:
Asynchronous:异步。
JavaScript:解释性语言。 XML:数据结构语言。
那么Ajax同步和异步呢?
同步:客户端脚本在未接受到服务器端响应之前,会一直等待,直到接受响应后才会继续执行。 异步:客户端代码和服务器端同时执行。
下面我们来初步了解Ajax的技术原理:
服务器
↓↑
XMLHttpRequest (XMLHttpRequest:JavaScript原生对象的一个请求。 返回true 和false)
↓↑
JavaScript (客户端脚本) ↓
------ -----
↓ ↓
CSS DOM (CSS样式)
-----------------------------------------------------------------------------------------------
* [将注册账号给服务器端,让服务器验证这个账号是否已经注册,然后给客户端提示信息]*
***** Ajax同步请求 ***** ***** ------>发送请求
***** - ->
***** -客户端 -> true,false 服务器端 -
- <- -
- <------------------- -
[[客户端接受 - 返回响应之后 - 会根据不同的 - 返回结果提示 - 不同的信息。]]
-----------------------------------------------------------------------------------------------
以上我们对Ajax有那么一丁点儿的初步认知后,那么我们即将步入Ajax的发展历史:
XMLHttpRequest:
XMLHttpRequest是一种用于在 Web 浏览器和 Web 服务器间传输数据消息的 JavaScript API。它支持浏览器使用 HTTP POST
(将数据传到服务器)或 GET
请求(从后台服务器访问数据)。
该 API 是大多数 Ajax 交互的核心,也是现代 Web 开发的一项基本技术。
XMLHttpRequest最先出现在IE5种,最初是由 Alex Hopmann 编写的 Microsoft ® ActiveX® 控件,创建 XHR 是为了处理 Microsoft Outlook® Web Access,
旨在解决高级(当时)前端接口和 Microsoft Exchange Server 间的交互。W3C标准支持。。。。(由于本人以前太懒,目前就这么多)
请求:有四种方式
1. open()
发起服务器连接。可以带参数:
-
-
method
。将要使用的 HTTP 方法(可以是POST
或者GET
)url
。请求的 URLasync
。 可选布尔参数,表明请求是否异步(该参数的默认值为 Ture)user
。一个可选用户名,供认证使用password
。一个可选密码,供认证使用
-
2. setRequestHeader()
设置请求报头,带有两个参数:报头及其相关值
3.send()
发送请求。该方法带有一个可选参数,包含 POST
请求的正文
4.abort()
中止请求
响应:属性和方法
-
status
。请求的标准 HTTP 状态(例如,成功请求将返回200
)statusText
。包括 Web 服务器返回的完整响应字符串,其中包括响应文本(例如,304 Not Modified
)getResponseHeader()
。返回特定报头内容;请求报头名称是其惟一参数getAllResponseHeaders()
。返回所有响应报头的文本responseText
。响应文本的字符串表示responseXML
。响应文本的 XML 表示,一个包含 DOM 和所有相关 DOM 方法的文档片段
readyState
实例化完成后,XMLHttpRequest
对象有 5 种状态,使用以下值表示:
-
- 0: UNSENT。表示对象已创建
- 1: OPENED。表示
open()
方法已成功调用 - 2: HEADERS_RECEIVED。表示来自请求的报头已收到
- 3: LOADING。表示响应报头已下载
- 4: DONE。表示请求完成,但是并没有指出请求是否成功或返回预期值(查询响应和标准 HTTP 报头来估量请求的健康状况)
Ajax框架简介:
AJAX模式
在一个发送请求到服务端的应用中,必须包含请求顺序、优先级、超时响应、错误处理及回调,其中许多元素已经在Web服务中包含了,
就像现在的SOA。AJAX开发人员拥有一个完整的系统架构知识。同时,随着技术的成熟还会有许多地方需要改进,特别是UI部分的易用性。
AJAX开发与传统的CS开发有很大的不同。这些不同引入了新的编程问题,最大的问题在于易用性。
由于AJAX依赖浏览器的JavaScript和XML,浏览器的兼容性和支持的标准也变得和JavaScript的运行时性能一样重要了。
这些问题中的大部分来源于浏览器、服务器和技术的组合,因此必须理解如何才能最好的使用这些技术。
[(注:Ajax模式思路介绍摘自百度文库)]
浏览器框架 [这里小编就介绍作用就行了,至于详细的要靠大家去研究了 引用自百度文库]
Dojo
Flash/JavaScript集成包
Google AJAXSLT
基于Google Maps的工作,Google AJAXSLT是使用XPath的XSL转换(XSLT)的JavaScript实现。XSLT可以把XML文档转换为其他语言,
如HTML。AJAXSLT允许使用JavaScript在浏览器上直接完成这些转换。
libXmlRequest
RSLite
RSLite是远程脚本的一个实现,由Brent Ashley编写。从技术上讲,它没有利用作为Ajax核心的XMLHttpRequest对象,但是得到了更广泛的浏览器支持。
如果你需要支持原来的浏览器,而这些浏览器不支持XMLHttpRequest对象,就可以试试RSLite。RSLite是相当轻量级的,已从2000年发展至今 。
SACK
sarrisa
XHConn
jquery
服务器框架 [部分引用自百度文库]
CPAINT
Sun的BluePrints小组一直忙于将Ajax纳入他们的解决方案目录(Solutions Catalog)中。S
olutions Catalog包括一些很好的文档,描述了如何使用基本Ajax,如何实现自动完成,如何创建一个进度条以及如何验证表单。
它还包括JavaServer Faces组件。
Ajax Net
Ajax Net之于Microsoft .NET就相当于SAJAX、DWR和SWATO之于Java。利用AjaxNet,你能从JavaScript客户调用.NET方法。
AjaxNet包括一个DLL,可以与VB.NET或C#一同使用。
AjaxNet的文档很好地展示了针对各种场景的解决方案,而且能得到相关的源代码。不过,AjaxNet的许可协议很不明确。
Microsoft的Atlas项目
Ruby on Rails
最后木木带大家进入一些创建实例代码:
<script type="text/javascript">
1.创建原生对象XMLHttpRequest
2.设置回调函数
3.初始化对象
4.发送请求
//创建原生态对象 XMLHttpRequest
function createXMLHttpRequest(){ //针对IE5,IE6浏览器
if(window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){ //其余的浏览器
return new XMLHttpRequest; }
}
//创建Ajax执行方法
$(function(){
$("使用者属性名称").对应事件(function(){
//1、创建原生对象XMLHttpRequest
var xhr = createXMLHttpRequest();
//2、设置回调函数
xhr.onreadystatechange = function(){
//判断状态 是否正常加载完毕并且数据完成加载
if(xhr.readyState == 4 && xhr.Status == 200){
document.getElementById('加载到的容器名称').innerHTML = xhr.responseText;
}
}
//3、初始化对象
xhr.open("提交方式","路径",true/false);
//4、发送请求
xhr.send("指定请求的路径(服务器端的页面)");
});
});
</script>