AJAX入手
AJAX = Asynchronous JavaScript and XML(异步的javaScript和XML) 它是一种使用现有标准的新方法 与服务器交换数据并更新部分网页的艺术,在不重新加载整个页的情况下。
一个简单的DEMO
<html>
<body>
<div id="div1"><h2>change this text</h2></div>
<button type="button1" onclick="loadXMLDoc()">Change Content</button>
</body>
</html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
.... AJAX script goes here ...
}
</script>
</head>
XMLHttpRequest是AJAX的基础 所有现代浏览器均支持XMLHttpRequest对象(IE7+、Firefox、Chrome、Safari 以及 Opera,IE5和IE6使用ActiveXObject) XMLHttpRequest用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
创建XMLHttpRequest对象的语法:
variable=new XMLHttpRequest(); IE5和IE6时创建语法:
variable=new ActiveXObject("Microsoft.XMLHTTP"); 为了应对所有的现代浏览器的创建语法:
var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+,Firefox,Chrome,Opera,Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6,IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } 向服务器发送请求
xmlhttp.open("GET","test1.txt",true); xmlhttp.send(); open(method,url,async) method:请求的类型;GET或POST url:文件在服务器上的位置 async:true(异步)或false(同步)
send(string) 将请求发送到服务器 string:仅用于POST请求
GET更简单也更快,并具在大部分情况下都能用。 POST的使用条件: 1 无法使用缓存文件(更新服务器上的文件或数据库) 2 向服务器发送大量数据(POST没有数据量限制) 3 发送包含量未知字符的用户输入时,POST比GET列稳定也更可靠
如果需要像HTML表单那样POST数据,请使用setRequestHeader()来添加HTTP头。然后在send()方法中规定您希望发送的数据:
xmlhttp.open("POST","ajax_test.asp",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("fname=Bill&lname=Gates"); setRequestHeader(header,value) header:规定的名称 value:规定头的值
Async = true 在响应处于onreadystatechange事件中的就绪状态时执行的函数 xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",true);
xmlhttp.send();
Async = false xmlhttp.open("GET",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
获得来自服务器的响应,使用XMLHttpRequest对象的responseText或responseXML属性。 responseText:返回字符串形式的响应 document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
responseXML:xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
{
txt=txt + x[i].childNodes[0].nodeValue + "<br />";
}
document.getElementById("myDiv").innerHTML=txt;
onreadystatechange事件 onreadystatechange 存储函数(或函数名),每当readyState属性改变时,就会调用该函数。 readyState 存有XMLHttpRequest的状态。从0到4发生变化。 0:请求未初始化 1:服务器连接已建立 2:请求已接收 3:请求处理中 4:请求已完成,且响应已就绪 status 200:“OK” 404:未找到页面 xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
注释:onreadystatechange事件被触发5次(0-4),对应着readystate的每个变化
callback函数是一种以参数形式传递给另一个函数的函数。
AJAX可用来与数据库进行动态通信。
AJAX基于下列核心技术: XHTML、CSS、DOM、JavaScript、XML、XMLHttpRequest
Ajax的工作原理相当于在用户和服务器之间加了一个中间层-AJAX引擎,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像一些数据验证和简单的数据处理等都交给AJAX引擎自己来做,只有确定需要从服务器读取新数据时再由AJAX引擎代为向服务器提交请求。
Ajax框架分类 客户端框架和服务器端框架 基于客户端浏览器的应用框架一般分为两种: 1、Application Frameworks: 2、Infrastructural Frameworks: 基于服务器端的应用框架通常以下面两种方式工作: 1、HTML/JS Generation 2、远程交互 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |