AJAX教程 W3SCHOOL推荐.docx
- 文档编号:4409952
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:29
- 大小:26.40KB
AJAX教程 W3SCHOOL推荐.docx
《AJAX教程 W3SCHOOL推荐.docx》由会员分享,可在线阅读,更多相关《AJAX教程 W3SCHOOL推荐.docx(29页珍藏版)》请在冰豆网上搜索。
AJAX教程W3SCHOOL推荐
Ajax教程
http:
//www.itjia.info
IT家,更多技术文章等着你
AJAX指异步JavaScript及XML(AsynchronousJavaScriptAndXML)。
AJAX是一种在2005年由Google推广开来的编程模式。
AJAX不是一种新的编程语言,而是一种使用现有标准的新方法。
通过AJAX,你可以创建更好、更快以及更友好的WEB应用程序。
AJAX基于JavaScript和HTTP请求(HTTPrequests)。
AJAX指异步JavaScript及XML(AsynchronousJavaScriptAndXML)。
您应当具备的基础知识
在继续学习之前,您需要对下面的知识有基本的了解:
∙HTML/XHTML
∙JavaScript
如果您希望首先学习这些项目,请在我们的首页访问这些教程。
AJAX=异步JavaScript及XML(AsynchronousJavaScriptandXML)
AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术。
通过AJAX,您的JavaScript可使用JavaScript的XMLHttpRequest对象来直接与服务器进行通信。
通过这个对象,您的JavaScript可在不重载页面的情况与Web服务器交换数据。
AJAX在浏览器与Web服务器之间使用异步数据传输(HTTP请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。
AJAX可使因特网应用程序更小、更快,更友好。
AJAX是一种独立于Web服务器软件的浏览器技术。
AJAX基于Web标准
AJAX基于下列Web标准:
∙JavaScript
∙XML
∙HTML
∙CSS
在AJAX中使用的Web标准已被良好定义,并被所有的主流浏览器支持。
AJAX应用程序独立于浏览器和平台。
AJAX事关更优秀的应用程序
Web应用程序较桌面应用程序有诸多优势;它们能够涉及广大的用户,它们更易安装及维护,也更易开发。
不过,因特网应用程序并不像传统的桌面应用程序那样完善且友好。
通过AJAX,因特网应用程序可以变得更完善,更友好。
今天您就可以使用AJAX
没有什么新东西可学。
AJAX基于已有的标准。
这些标准已被大多数开发者使用多年。
AJAX使用Http请求
在传统的JavaScript编程中,假如您希望从服务器上的文件或数据库中得到任何的信息,或者向服务器发送信息的话,就必须利用一个HTML表单向服务器GET或POST数据。
而用户则需要单击“提交”按钮来发送/获取信息,等待服务器的响应,然后一张新的页面会加载结果。
由于每当用户提交输入后服务器都会返回一张新的页面,传统的web应用程序变得运行缓慢,且越来越不友好。
通过利用AJAX,您的JavaScript会通过JavaScript的XMLHttpRequest对象,直接与服务器来通信。
通过使用HTTP请求,web页可向服务器进行请求,并得到来自服务器的响应,而不加载页面。
用户可以停留在同一个页面,他或她不会注意到脚本在后台请求过页面,或向服务器发送过数据。
XMLHttpRequest对象
通过使用XMLHttpRequest对象,web开发者可以做到在页面已加载后从服务器更新页面!
在2005年AJAX被Google推广开来(GoogleSuggest)。
Google建议使用XMLHttpRequest对象来创建一种动态性极强的web界面:
当您开始在Google的搜索框中输入查询时,JavaScript会向某个服务器发出这些字词,然后服务器会返回一系列的搜索建议。
XMLHttpRequest对象得到下列浏览器的支持:
InternetExplorer5.0+、Safari1.2、Mozilla1.0/Firefox、Opera8+以及Netscape7。
您的第一个AJAX应用程序
为了让您理解AJAX的工作原理,我们将创建一个小型的AJAX应用程序。
首先,我们需要一个带有两个文本框的HTML表单:
用户名和时间。
用户名文本框由用户填写,而时间文本框使用AJAX进行填写。
此HTML文件名为"testAjax.htm"(请注意这个HTML表单没有提交按钮!
):
用户:
时间:
我们将在下一节解释AJAX的基本原理。
AJAX-浏览器支持
AJAX的要点是XMLHttpRequest对象。
不同的浏览器创建XMLHttpRequest对象的方法是有差异的。
IE浏览器使用ActiveXObject,而其他的浏览器使用名为XMLHttpRequest的JavaScript内建对象。
如需针对不同的浏览器来创建此对象,我们要使用一条"tryandcatch"语句。
您可以在我们的JavaScript教程中阅读更多有关try和catch语句的内容。
让我们用这段创建XMLHttpRequest对象的JavaScript来更新一下我们的"testAjax.htm"文件:
functionajaxFunction()
{
varxmlHttp;
try
{
//Firefox,Opera8.0+,Safari
xmlHttp=newXMLHttpRequest();
}
catch(e)
{
//InternetExplorer
try
{
xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
alert("您的浏览器不支持AJAX!
");
returnfalse;
}
}
}
}
用户:
时间:
例子解释:
首先声明一个保存XMLHttpRequest对象的xmlHttp变量。
然后使用XMLHttp=newXMLHttpRequest()来创建此对象。
这条语句针对Firefox、Opera以及Safari浏览器。
假如失败,则尝试针对InternetExplorer6.0+的xmlHttp=newActiveXObject("Msxml2.XMLHTTP"),假如也不成功,则尝试针对InternetExplorer5.5+的xmlHttp=newActiveXObject("Microsoft.XMLHTTP")。
假如这三种方法都不起作用,那么这个用户所使用的浏览器已经太过时了,他或她会看到一个声明此浏览器不支持AJAX的提示。
注释:
上面这些浏览器定制的代码很长,也很复杂。
不过,每当您希望创建XMLHttpRequest对象时,这些代码就能派上用场,因此您可以在任何需要使用的时间拷贝粘贴这些代码。
上面这些代码兼容所有的主流浏览器:
InternetExplorer、Opera、Firefox以及Safari。
下一节为您展示如何使用XMLHttpRequest对象与服务器进行通信。
AJAX-更多有关XMLHttpRequest对象的知识
在向服务器发送数据之前,我们有必要解释一下XMLHttpRequest对象的三个重要的属性。
onreadystatechange属性
onreadystatechange属性存有处理服务器响应的函数。
下面的代码定义一个空的函数,可同时对onreadystatechange属性进行设置:
xmlHttp.onreadystatechange=function()
{
//我们需要在这里写一些代码
}
readyState属性
readyState属性存有服务器响应的状态信息。
每当readyState改变时,onreadystatechange函数就会被执行。
这是readyState属性可能的值:
状态
描述
0
请求未初始化(在调用open()之前)
1
请求已提出(调用send()之前)
2
请求已发送(这里通常可以从响应得到内容头部)
3
请求处理中(响应中通常有部分数据可用,但是服务器还没有完成响应)
4
请求已完成(可以访问服务器响应并使用它)
我们要向这个onreadystatechange函数添加一条If语句,来测试我们的响应是否已完成(意味着可获得数据):
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
//从服务器的response获得数据
}
}
responseText属性
可以通过responseText属性来取回由服务器返回的数据。
在我们的代码中,我们将把时间文本框的值设置为等于responseText:
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
document.myForm.time.value=xmlHttp.responseText;
}
}
下一节,我们会介绍如何向服务器请求数据!
AJAX-向服务器发送一个请求
要想把请求发送到服务器,我们就需要使用open()方法和send()方法。
open()方法需要三个参数。
第一个参数定义发送请求所使用的方法(GET还是POST)。
第二个参数规定服务器端脚本的URL。
第三个参数规定应当对请求进行异步地处理。
send()方法可将请求送往服务器。
如果我们假设HTML文件和ASP文件位于相同的目录,那么代码是这样的:
xmlHttp.open("POST","getTime.jsp",true);
xmlHttp.send(null);
现在,我们必须决定何时执行AJAX函数。
当用户在用户名文本框中键入某些内容时,我们会令函数“在幕后”执行。
functionajaxFunction()
{
varxmlHttp;
try
{
//Firefox,Opera8.0+,Safari
xmlHttp=newXMLHttpRequest();
}
catch(e)
{
//InternetExplorer
try
{
xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
alert("您的浏览器不支持AJAX!
");
returnfalse;
}
}
}
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
document.myForm.time.value=xmlHttp.responseText;
}
}
xmlHttp.open("POST","getTime.jsp",true);
xmlHttp.send(null);
}
用户:
时间:
下一节介绍"time.asp"的脚本,这样我们完整的AJAX应用程序就搞定了。
AJAX-服务器端的脚本
现在,我们要创建可显示当前服务器时间的脚本。
responseText属性会存储从服务器返回的数据。
在这里,我们希望传回当前的时间。
这是"time.asp"的代码:
<%
//阻止浏览器缓存
response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);
java.util.Calendarcdate=java.util.Calendar.getInstance();
//
intHOUR=cdate.get(java.util.Calendar.HOUR);
intMINUTE=cdate.get(java.util.Calendar.MINUTE);
intSECOND=cdate.get(java.util.Calendar.SECOND);
intMILLISECOND=cdate.get(java.util.Calendar.MILLISECOND);
//
StringH="";
StringM="";
StringS="";
Strings="";
//
if(HOUR<10){
H="0"+String.valueOf(HOUR);
}else{
H=String.valueOf(HOUR);
}
if(MINUTE<10){
M="0"+String.valueOf(MINUTE);
}else{
M=String.valueOf(MINUTE);
}
if(SECOND<10){
S="0"+String.valueOf(SECOND);
}else{
S=String.valueOf(SECOND);
}
s=String.valueOf(MILLISECOND);
//
out.println(H+":
"+M+":
"+S+"."+s);
%>
注释:
页面必须被设定为不页面缓存
运行您的AJAX应用程序
请在下面的文本框中键入一些文本,然后单击时间文本框:
窗体顶端
用户:
时间:
窗体底端
时间文本框可在不加载页面的情况下从"time.asp"获得服务器的时间!
第二个例子:
我们已看到AJAX可被用来创建更多交互性的应用程序。
AJAXSuggest实例
在下面的AJAX例子中,我们会演示当用户向一个标准的HTML表单中输入数据时网页如何与web服务器进行通信。
在下面的文本框中输入名字:
窗体顶端
FirstName:
窗体底端
Suggestions:
例子解释-HTML表单
表单的HTML代码:
Suggestions:
正如您看到的,这是一个简单的带有名为"txt1"输入域的HTML表单。
输入域的事件属性定义了一个由onkeyup事件触发的函数。
表单下面的段落包含了一个名为"txtHint"的span,这个span充当了由web服务器所取回的数据的位置占位符。
当用户输入数据时,名为"showHint()"的函数就会被执行。
函数的执行是由"onkeyup"事件触发的。
另外需要说明的是,当用户在文本域中输入数据时把手指从键盘按键上移开时,函数showHint就会被调用。
例子解释-showHint()函数
showHint()函数是一个位于HTML页面head部分的很简单的JavaScript函数。
此函数包含以下代码:
functionshowHint(str)
{
if(str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
xmlHttp=GetXmlHttpObject()
if(xmlHttp==null)
{
alert("您的浏览器不支持AJAX!
");
return;
}
varurl="gethint.asp";
url=url+"?
q="+str;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
每当有字符输入文本框时,此函数就会执行。
假如文本域中存在某些输入,函数就会执行:
∙定义回传数据的服务器的url(文件名)
∙使用文本框的内容向url添加参数(q)
∙添加一个随机的数字,以防止服务器使用某个已缓存的文件
∙创建一个XMLHTTP对象,并告知此对象当某个改变被触发时执行名为stateChanged的函数
∙向服务器发送一个HTTP请求
∙如果输入域为空,此函数仅仅会清空txtHint占位符的内容
例子解释-GetXmlHttpObject()函数
上面的例子可调用名为GetXmlHttpObject()的函数。
此函数的作用是解决为不同浏览器创建不同的XMLHTTP对象的问题。
这是此函数的代码:
functionGetXmlHttpObject()
{
varxmlHttp=null;
try
{
//Firefox,Opera8.0+,Safari
xmlHttp=newXMLHttpRequest();
}
catch(e)
{
//InternetExplorer
try
{
xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
}
}
returnxmlHttp;
}
例子解释-stateChanged()函数
stateChanged()函数包含下面的代码:
functionstateChanged()
{
if(xmlHttp.readyState==4)
{
document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
}
}
每当XMLHTTP对象的状态发生改变时,stateChanged()函数就会执行。
当状态变更为4(“完成”)时,txtHint占位符的内容就被响应文本来填充。
AJAXSuggest源代码的实例
下面的源代码属于上一节的AJAX实例。
您可以拷贝粘贴这些代码,然后亲自测试一下。
AJAXHTML页面
这是HTML页面。
它包含了一个简单的HTML表单,以及一个指向JavaScript的链接。
Suggestions:
下面列出了JavaScript代码。
AJAXJavaScript
这是JavaScript代码,存储在文件"clienthint.js"中:
varxmlHttp
functionshowHint(str)
{
if(str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
xmlHttp=GetXmlHttpObject()
if(xmlHttp==null)
{
alert("您的浏览器不支持AJAX!
");
return;
}
varurl="gethint.asp";
url=url+"?
q="+str;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
functionstateChanged()
{
if(xmlHttp.readyState==4)
{
document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
}
}
functionGetXmlHttpObject()
{
varxmlHttp=null;
try
{
//Firefox,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AJAX教程 W3SCHOOL推荐 AJAX 教程 W3SCHOOL 推荐