ajax教程.docx

上传人:b****5 文档编号:4164044 上传时间:2022-11-28 格式:DOCX 页数:36 大小:30.96KB
下载 相关 举报
ajax教程.docx_第1页
第1页 / 共36页
ajax教程.docx_第2页
第2页 / 共36页
ajax教程.docx_第3页
第3页 / 共36页
ajax教程.docx_第4页
第4页 / 共36页
ajax教程.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

ajax教程.docx

《ajax教程.docx》由会员分享,可在线阅读,更多相关《ajax教程.docx(36页珍藏版)》请在冰豆网上搜索。

ajax教程.docx

ajax教程

AJAX 基础—AJAX 简介

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 基础—AJAX Http 请求

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应用程序

为了让您理解AJAX的工作原理,我们将创建一个小型的Ajax应用程序。

首先,我们需要一个带有两个文本框的HTML表单:

用户名和时间。

用户名文本框由用户填写,而时间文本框使用Ajax进行填写。

此HTML文件名为"testAjax.htm"(请注意这个HTML表单没有提交按钮!

):

以下是引用片段:

用户:

 

时间:

 

我们将在下一节解释Ajax的基本原理。

AJAX 基础—AJAX 浏览器支持

Ajax-浏览器支持

Ajax的要点是XMLHttpRequest对象。

不同的浏览器创建XMLHttpRequest对象的方法是有差异的。

IE浏览器使用ActiveXObject,而其他的浏览器使用名为XMLHttpRequest的javascript内建对象。

如需针对不同的浏览器来创建此对象,我们要使用一条"tryandcatch"语句。

让我们用这段创建XMLHttpRequest对象的javascript来更新一下我们的"testAjax.htm"文件:

以下是引用片段:

function AjaxFunction()

 {

 var xmlHttp;

 

 try

    {

   // Firefox, Opera 8.0+, Safari

    xmlHttp=new XMLHttpRequest();

    }

 catch (e)

    {

  // Internet Explorer

   try

      {

      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");

      }

   catch (e)

      {

      try

         {

         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");

         }

      catch (e)

         {

         alert("您的浏览器不支持Ajax!

");

         return false;

         }

      }

    }

 }

用户:

 

时间:

 

例子解释:

首先声明一个保存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 基础—AJAX - 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 基础—AJAX - 请求服务器

Ajax-向服务器发送一个请求

要想把请求发送到服务器,我们就需要使用open()方法和send()方法。

open()方法需要三个参数。

第一个参数定义发送请求所使用的方法(GET还是POST)。

第二个参数规定服务器端脚本的URL。

第三个方法规定应当对请求进行异步地处理。

send()方法可将请求送往服务器。

如果我们假设HTML文件和ASP文件位于相同的目录,那么代码是这样的:

以下是引用片段:

xmlHttp.open("GET","time.asp",true);

xmlHttp.send(null);

现在,我们必须决定何时执行Ajax函数。

当用户在用户名文本框中键入某些内容时,我们会令函数“在幕后”执行。

以下是引用片段:

function AjaxFunction()

 {

 var xmlHttp;

 

 try

    {

   // Firefox, Opera 8.0+, Safari

    xmlHttp=new XMLHttpRequest();

    }

 catch (e)

    {

  // Internet Explorer

   try

      {

      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");

      }

   catch (e)

      {

      try

         {

         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");

         }

      catch (e)

         {

         alert("您的浏览器不支持Ajax!

");

         return false;

         }

      }

    }

    

    xmlHttp.onreadystatechange=function()

      {

      if(xmlHttp.readyState==4)

        {

         document.myForm.time.value=xmlHttp.responseText;

        }

      }

    xmlHttp.open("GET","time.asp",true);

    xmlHttp.send(null);

    

 }

用户:

 

时间:

 

下一节介绍"time.asp"的脚本,这样我们完整的Ajax应用程序就搞定了。

AJAX 基础—AJAX -服务器端的脚本

Ajax-服务器端的脚本

现在,我们要创建可显示当前服务器时间的脚本。

responseText属性会存储从服务器返回的数据。

在这里,我们希望传回当前的时间。

这是"time.asp"的代码:

以下是引用片段:

<%

response.expires=-1

response.write(time)

%>

注释:

Expires属性可设置在页面缓存失效前页面被缓存的时间(分钟)。

Response.Expires=-1指示页面不会被缓存。

运行您的Ajax应用程序

请在下面的文本框中键入一些文本,然后单击时间文本框:

窗体顶端

用户:

时间:

窗体底端

时间文本框可在不加载页面的情况下从"time.asp"获得服务器的时间!

AJAX 高级—AJAX 请求实例

我们已看到Ajax可被用来创建更多交互性的应用程序。

AjaxSuggest实例

在下面的Ajax例子中,我们会演示当用户向一个标准的HTML表单中输入数据时网页如何与web服务器进行通信。

在下面的文本框中输入名字:

窗体顶端

FirstName:

窗体底端

Suggestions:

例子解释-HTML表单

表单的HTML代码:

以下是引用片段:

 

First Name:

Suggestions:

 

 

正如您看到的,这是一个简单的带有名为"txt1"输入域的HTML表单。

输入域的事件属性定义了一个由onkeyup事件触发的函数。

表单下面的段落包含了一个名为"txtHint"的span,这个span充当了由web服务器所取回的数据的位置占位符。

当用户输入数据时,名为"showHint()"的函数就会被执行。

函数的执行是由"onkeyup"事件触发的。

另外需要说明的是,当用户在文本域中输入数据时把手指从键盘按键上移开时,函数showHint就会被调用。

例子解释-showHint()函数

showHint()函数是一个位于HTML页面head部分的很简单的javascript函数。

此函数包含以下代码:

以下是引用片段:

function showHint(str)

{

  if (str.length==0)

    { 

    document.getElementById("txtHint").innerHTML="";

    return;

    }

  xmlHttp=GetXmlHttpObject()

  

  if (xmlHttp==null)

    {

    alert ("您的浏览器不支持Ajax!

");

    return;

    }

var url="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对象的问题。

这是此函数的代码:

以下是引用片段:

function GetXmlHttpObject()

{

  var xmlHttp=null;

  try

    {

    // Firefox, Opera 8.0+, Safari

    xmlHttp=new XMLHttpRequest();

    }

  catch (e)

    {

    // Internet Explorer

    try

      {

      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");

      }

    catch (e)

      {

      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");

      }

    }

  return xmlHttp;

}

例子解释-stateChanged()函数

stateChanged()函数包含下面的代码:

以下是引用片段:

function stateChanged() 

  if (xmlHttp.readyState==4)

  { 

  document.getElementById("txtHint").innerHTML=xmlHttp.responseText;

  }

}

每当XMLHTTP对象的状态发生改变时,stateChanged()函数就会执行。

当状态变更为4(“完成”)时,txtHint占位符的内容就被响应文本来填充。

AJAX 高级—AJAX 请求源代码

AjaxSuggest源代码的实例

下面的源代码属于上一节的Ajax实例。

您可以拷贝粘贴这些代码,然后亲自测试一下。

AjaxHTML页面

这是HTML页面。

它包含了一个简单的HTML表单,以及一个指向javascript的链接。

以下是引用片段:

 

 

First Name:

Suggestions:

 

 

下面列出了javascript代码。

Ajaxjavascript

这是javascript代码,存储在文件"clienthint.js"中:

以下是引用片段:

var xmlHttp

function showHint(str)

{

  if (str.length==0)

    { 

    document.getElementById("txtHint").innerHTML="";

    return;

    }

  xmlHttp=GetXmlHttpObject()

  if (xmlHttp==null)

    {

    alert ("您的浏览器不支持Ajax!

");

    return;

    }

  var url="gethint.asp";

  url=url+"?

q="+str;

  url=url+"&sid="+Math.random();

  xmlHttp.onreadystatechange=stateChanged;

  xmlHttp.open("GET",url,true);

  xmlHttp.send(null);

function stateChanged() 

if (xmlHttp.readyState==4)

document.getElementById("txtHint").innerHTML=xmlHttp.responseText;

}

}

function GetXmlHttpObject()

{

  var xmlHttp=null;

  try

    {

    // Firefox, Opera 8.0+, Safari

    xmlHttp=new XMLHttpRequest();

    }

  catch (e)

    {

    // Internet Explorer

    try

      {

      xmlHttp=new Acti

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1