Ajax技术分类与实现

发布于 2022-09-08 19:24:42 字数 10285 浏览 17 评论 3

Ajax技术分类与实现



1.AJAX简介

      AJAX是实现web2.0服务中的核心技术,全称为“异步JavaScript和XML技    术”(Asynchronous JavaScript and XML);Ajax的核心技术理念在于使用XMLHttpRequest对象发送异步请求。最初为XMLHttpRequest对象提供浏览器支持的是微软公司。AJAX技术的出现,可以说是挽救了传统的B/S结构,并赋与web应用新的生命。简单的说,通过AJAX,我们可以用XMLHttpRequest对象来直接与服务器进行通信,通过这个对象,我们就可以在不重载页面的情况与 Web 服务器交换数据。

2.AJAX的优点

      在传统的 JavaScript 编程中,假如您希望从服务器上的文件或数据库中得到任何的信息,或者向服务器发送信息的话,就必须利用一个 HTML 表单向服务器 GET 或 POST 数据。而用户则需要单击“提交”按钮来发送/获取信息,等待服务器的响应,然后一张新的页面会加载结果。

由于每当用户提交输入后服务器都会返回一张新的页面,传统的 web 应用程序变得运行缓慢,且越来越不友好。

通过利用 AJAX,您的 JavaScript 会通过 JavaScript 的 XMLHttpRequest 对象,直接与服务器来通信。

通过使用 HTTP 请求,web 页可向服务器进行请求,并得到来自服务器的响应,而不加载页面。用户可以停留在同一个页面,他或她不会注意到脚本在后台请求过页面,或向服务器发送过数据。

3.AJAX中用到的技术

     实际上,Ajax不是一种技术,而是几种技术。每种技术都具有独特之处,合在一起就形成功能强大的新技术。Ajax包括:

   javaScript:实现客户端的数据发送和界面更新,是ajax实现的编程语言;

  XMLHttpRequest:浏览器内置的用以进行异步数据发送和接收的对象,是AJAX核心对象;

   Css+div:对用户而言,AJAX的价值是用户界面更加友好---这当然还是依靠css+div实现;

   DOM模型:AJAX常见的技巧就是使用js响应dom组件事件或更新其;

   Xml:XML仅是一种传输数据的格式,在ajax应用中常以xml格式在c/s间交换数据;

   Html

4.AJAx的实现步骤

     实现AJAX的第一步就是要创建XMLHttpRequest对象

     而在不同的浏览器中,创建该对象的方法是不同的

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

  为了是程序更加的兼容,我们可以使用if语句或者是try    catch语句来创建该对象

   如:
  1. function ajaxFunction()
  2. {
  3. var xmlHttp;

  4. try
  5.     {
  6.    // Firefox, Opera 8.0+, Safari
  7.     xmlHttp=new XMLHttpRequest();
  8.     }
  9. catch (e)
  10.     {

  11.   // Internet Explorer
  12.    try
  13.       {
  14.       xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  15.       }
  16.    catch (e)
  17.       {

  18.       try
  19.          {
  20.          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  21.          }
  22.       catch (e)
  23.          {
  24.          alert("您的浏览器不支持AJAX!");
  25.          return false;
  26.          }
  27.       }
  28.     }
  29. }
  30. </script>
复制代码在上面的例子中 ,

首先声明一个保存 XMLHttpRequest 对象的 xmlHttp 变量。

然后使用 XMLHttp=new XMLHttpRequest() 来创建此对象。这条语句针对 Firefox、Opera 以及 Safari 浏览器。假如失败,则尝试针对 Internet Explorer 6.0+ 的 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"),假如也不成功,则尝试针对 Internet Explorer 5.5+ 的 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")。

第二步是向服务器发送数据和请求

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

open() 方法需要三个参数。第一个参数定义发送请求所使用的方法(GET 还是 POST)。第二个参数规定服务器端脚本的 URL。第三个参数规定应当对请求进行异步地处理。

    主要形式为:xmlHttp.open("GET",url,true);
                      xmlHttp.send(null);
第三步,也是很重要的一步就是获得服务器的响应后采取相应的操作:如改变WEB页面的某一个元素的值等   

在获得服务器的响应前,我们有必要解释一下 XMLHttpRequest 对象的几个重要的属性。

        1、onreadystatechange 属性

onreadystatechange 属性存有处理服务器响应的函数

        2、responseText 属性

可以通过 responseText 属性来取回由服务器返回的数据。

下面是我用AJAX写的一个小程序,目的是在不加载页面的情况下,当鼠标从用户栏离开时在时间栏里显示当前时间

   主要代码如下:
  1.           页面的代码是:<html>
  2.   <head>
  3.     <title>Ajax1.0.html</title>
  4.    <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
  5.   </head>
  6.   <script type="text/javascript">


  7.      function  AjaxFunction(){
  8.         var xmlHttp;

  9. //1、首先是创建XMLHttpRequest对象
  10.           try
  11.             {   
  12.             //FireFox,Poera 8.0+,Safari
  13.             xmlHttp=new XMLHttpRequest();
  14.             }
  15.           catch(e){
  16.          
  17.           try{
  18.           //IE6.0+
  19.            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  20.            }
  21.           catch(e){
  22.        try{
  23.           //IE5.5+
  24.           xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  25.           }  
  26.          catch(e){
  27.       alert("您的浏览器不支持AJAX!");
  28.          return false;
  29.         }
  30.      }

  31. //3、获取服务器的响应并显示时间
  32.      }
  33.      xmlHttp.onreadystatechange=function()
  34.        {
  35.        if(xmlHttp.readyState==4){
  36.            document.myForm.time.value=xmlHttp.responseText;
  37.          }
  38.         }

  39. //2、发送请求给服务器
  40.         xmlHttp.open("GET","time",true);//time是Servlet的名字,也是其URL地址
  41.         xmlHttp.send(null);
  42.         
  43.      }
  44.   
  45.   </script>
  46.   
  47.   <body>
  48.     <form  name="myForm" >
  49.     <table>
  50.              <tr>          <td>用户</td>
  51.                            <td><input type="text"   name="username" onblur ="AjaxFunction();"/></td>

  52.                               //onblur ="AjaxFunction();来激活javascript中的代码
  53.                     </tr>
  54.              <tr>      <td>时间</td>
  55.                        <td><input type="text"  name="time"  /></td>
  56.                     </tr>
  57.           </table>                           
  58.     </form><br>
  59.   </body>
  60. </html>
复制代码Servlet   time的主要代码是:
  1. public void doGet(HttpServletRequest request, HttpServletResponse response)
  2.    throws ServletException, IOException {

  3.   response.setContentType("text/html;charset=UTF-8");
  4.   PrintWriter out = response.getWriter();
  5.    Date d=new Date();
  6.    int  h=d.getHours();
  7.    int m=d.getMinutes();
  8.    int s=d.getSeconds();
  9.    System.out.println(d);
  10.    out.println(h+":"+m+":"+s);//这里就将刚创建的时间传递给了html页面
  11.   out.flush();
  12.   out.close();
  13. }
复制代码最后结果为:

输入用户名,鼠标焦点移开

1.jpg (7.1 KB, 下载次数: 2)

下载附件

2011-02-16 09:56 上传


鼠标焦点移开,触发事件后:

2.JPG (8.93 KB, 下载次数: 2)

下载附件

2011-02-16 09:56 上传


这样一个实例就完成了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

怪我鬧 2022-09-15 02:36:23

谢谢支持,相互学习!

柒七 2022-09-14 15:25:47

不错嘛呵呵bolt引擎

金兰素衣 2022-09-10 07:36:09

呵呵,不错的文章,正准备学习AJAX了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文