认识AJAX
1、AJAX指异步JavaScript及XML
2、AJAX不是一个新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。它可使因特网应用程序更小、更快,更友好。
3、AJAX使用Http请求,由于每当用户提交输入后服务器都会返回一张新的页面,传统的 web 应用程序变得运行缓慢,且越来越不友好。通过利用 AJAX,您的 JavaScript 会通过 JavaScript 的XMLHttpRequest 对象,直接与服务器来通信。通过使用 XMLHttpRequest 对象,web 开发者可以做到在页面已加载后从服务器更新页面!
4、游览器对AJAX的支持,由于AJAX的要点是XMLHttpRequest 对象,针对不同的游览器,创建 XMLHttpRequest 对象的方法是有差异的,我们可以是用一下代码来根据不同的游览器来实现创建 XMLHttpRequest 对象:
function ajaxFunction(){
var xmlHttp;
try{
//Firefox,Opera8.0+,Safari
xmlHttp = new XMLHttpRequest();
alert("success!");
}catch(e){
//IE 6.0+
try{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
alert("success!");
}catch(e){
try{
//IE5.0+
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
alert("success!");
}catch(e){
alert("您的游览器不支持AJAX");
return false;
}
}
}
}
当然我们也可以这样判断一个游览器是否支持XMLHttpRequest 对象,并且创建相应的对象实例
function funXHR(){
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");
}
}
AJAX基础知识
1、关于XMLHttpRequest对象
a)onreadystatechange属性,onreadystatechange属性存有处理服务器相应的函数,
xmlHttp.onreadystatechange=function(){
//代码段 定义一个空函数,可同时对 onreadystatechange 属性进行设置
}
b)readyState属性,readyState 属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。
readyState可能值:0(请求未初始化在调用 open() 之前)、1(请求已提出,调用 send() 之前)、2(请求已发送,这里通常可以从响应得到内容头部)3、(请求处理中,响应中通常有部分数据可用,但是服务器还没有完成响应)4,、(请求已完成,可以访问服务器响应并使用它)
xmlHttp.onreadystatechange=function(){
//请求已经完成
if(xmlHttp.readyState == 4){
//从服务器的response获得数据
}
}
c)responseText属性,可以通过该属性取回由服务器返回的数据
xmlHttp.onreadystatechange=function(){
//请求已经完成
if(xmlHttp.readyState == 4){
//从服务器的response获得数据
document.getElementById("time").value = xmlHttp.responseText;//将一个ID为time的HTML元素的值设置为responseText
}
}
2、向服务器发送请求
如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();
open(
method,
url,
async)参数:method表示请求类型,有GET或POST(推荐使用POST);url表示请求的文件在服务器上的位置,async表示异步(true)或同步(false)
send()方法表示将请求发送到服务器。
3、服务器的响应
如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText(字符串方式的响应) 或 responseXML 属性(XML 形式的响应)。
对于responseText方式可以直接使用其值
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;//设置一个ID为myDiv的HTML元素的值为responseText;
对于responseXML,其响应内容为responseXML对象,需要对其内容进行提取后使用。