Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 348|回复: 0

[AJAX学习]一个最简单的AJAX实例及解析

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-12 23:48:27 | 显示全部楼层 |阅读模式
    去年开始看AJAX时候所写的第一个小程序,整理了下。应该算AJAX最简单的应用了。 首先,演示一下实际运行的效果。点击弹出新页面中的“See Author”链接,你将会看到该页面作者。从页面提交到显示从服务器获得的结果,这段过程你将不会发现页面的重刷新。
    下面给出该示例的代码:
    1. ajax.HTML
      
       
          
          
           <html> <head>
          
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
          
    <title>A simple AJAX example</title>
          
    <script type="text/javascript"><!--
          
    function findAuthor(file){
          
        var xmlObj = null;
          
    if(window.XMLHttpRequest){
          
        xmlObj = new XMLHttpRequest();
          
    } else if(window.ActiveXObject){
          
        xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
          
    } else {
          
         return;
          
    }
          
          
         
       
      
      xmlObj.onreadystatechange = function(){
       if(xmlObj.readyState == 4){
         updateObj("author",
         xmlObj.responseXML.getElementsByTagName("name")[0].firstChild.data);
       }
    }
    xmlObj.open ("GET", file, true);
    xmlObj.send ("");
    }
    function updateObj(obj, data){
       var textNode = document.createTextNode(data);
        document.getElementById(obj).appendChild(textNode);
    }
    //--></script>
    </head>
    <body>
    <h1>A simple AJAX program</h1>
    <p id="obj">This page is powered by <a id="link" href="data.xml" title="View the author."
    onclick="findAuthor("data.xml"); this.style.display="none"; return false">
    See Author.</a><span id="author" style="color: olive; font-weight: bolder"></span></p>
    </body>
    </html>   2.data.xml

    <?xml version= "1.0" encoding= "UTF-8" ?>  <author>    <name>www.jsfchina.org</name>  </author>

    解析下。

    该例应该算是最简单的ajax应用了。为了尽求简单性,这里没有使用到任何服务器端技术,诸如Servlet,cgi等等。这里并没有使用到任何业务方法,而是直接从服务器的一个xml文档(data.xml)中读取数据。为了简洁性,本例将JavaScript文件也集成到了ajax.html中,实际应用中完全可以独立出去使用。

    该例通过点击链接,激发了一个javascript的方法然后进行交互处理。

    AJAX的核心是XMLHttpRequest,本例通过下列代码创建这个对象

    var xmlObj = null ; if (window.XMLHttpRequest){      xmlObj = new XMLHttpRequest();   } else if (window.ActiveXObject){     xmlObj = new ActiveXObject( "Microsoft.XMLHTTP" );  } else {     return ;  }  
    if(window.XMLHttpRequest)处理了浏览器是mozilla的情况,而if(window.ActiveXObject)则处理了浏览器为IE的情况,目的都是一个:创建了一个XMLHttpRequest对象。创建这个对象的目的就是让XMLHttpRequest对象与服务器交互,而不影响用户正在浏览的页面。这也是AJAX称谓的由来,异步javascript交互xml处理。

    创建好XMLHttpRequest对象之后,调用的函数将会监听该对象状态的变化,即onreadystatechange属性。XMLHttpRequest对象有5个状态,从0-4的整数,也就是说onreadystatechange调用的函数(示例中function(){...})将会执行4次。示例中我们在该对象处于完成状态(readyState=4)时进行处理(此时服务器已经传回所有信息),为id为“author”的span对象添加了一个textNode节点,该textNode是data.xml文档中name节点的第一个子元素的值。

    好了,这就是完成一次异步交互所需要的步骤。

    以下是一些注意点。

    第一,本例中使用的http的GET方法,你也可以使用POST,但是要设定Content-Type值,即xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),这个方法用来设置了MIME类型。还有一点要注意,这些方法最好都大写,否则在firefox下将没有作用。

    第二,xmlObj.open ("GET", file, true)。该方法会建立与服务器的链接,‘GET"指明了http调用方法;file指明了调用的url;true指明了该调用是异步处理,可以省略,默认为"true"。

    第三,xmlObj.send(para)向服务器发出请求。是以POST向服务器发出request,其参数格式为:name=namevalue&so=on。
    最后,欢迎访问作者的网站: JSF中国www.jsfchina.org



      
      
       
       

         
       

         
       
      




    源码下载:http://file.javaxxz.com/2014/10/12/234827437.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-22 22:36 , Processed in 0.364458 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表