经验分享:原生态Ajax的创建【java学习笔记Kingsley】Java开发工程师

/ 闽江学院软件学院Java开发工程师 / 2017-03-11

一.Ajax的介绍

AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML),它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax。

java工程师,java经验分享,Ajax原生态

二.原生态Ajax创建

在此之前老K需要说说XMLHttpRequest对象,它是Ajax技术体系中最为核心的技术。缺少了它,Ajax的其余技术就无法成为一个有机的整体,将会土崩瓦解。

因为XMLHttpRequest还没有得到标准化,不同的浏览器使用不同的方法来创建XMLHttpRequest对象。不同的浏览器使用不同的方法来创建XMLHttpRequest对象。Internet Exolorer使用ActiveXObject。其他浏览器使用名为XMLHttpRequest的JavaScript内建对象。要克服这个问题,可以使用这段简单的代码:


var XMLHttp=null;
if (window.XMLHttpRequest){
XMLHttp=new XMLHttpRequest();
}else if (window.ActiveXObject){
XMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}

①解析html文件

场景解释:点击按钮,立即实现haha.html的内容(浏览器没有刷新)。

<script type="text/javascript">
   window.onload = function() {    //页面加载函数
       var button = document.getElementById("button");
       button.onclick = function() {
       var request = new XMLHttpRequest();   //得到XMLHttpRequest对象(不重复上面代码)
       var url = "haha.html";   //haha.html文件路径(与该文件同一文件夹内)
       var method = "GET"; //请求方式
       request.open(method, url);   //向服务器发送请求,接收两个参数,请求方式和资源路径
       request.send(null); //该方法可为已经待命的请求发送指令,若请求方式为get,则不会发送任何数据
       request.onreadystatechange = function() {  //设置onreadystatechange的事件处理函数
            if (request.readyState == 4) {    //代表请求的状态,4为响应发送完毕
                 if (request.status == 200 || request.status == 304) {  //status代表服务器状态码,200(ok),304(没有被修改)
                        var object = request.responseText;  //得到html数据
                        alert(object);  //显示数据

                           }

                      }
               }
         }
     }
</script>

②解析xml文件

场景解释:点击按钮,立即实现haha.xml的内容(浏览器没有刷新)。Xml文件结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<fishcoo>
   <java>Kingsley</java>
</fishcoo>
<script type="text/javascript">
   window.onload = function() {    //页面加载函数
       var button = document.getElementById("button");
       button.onclick = function() {
           var request = new XMLHttpRequest();   //得到XMLHttpRequest对象(不重复上面代码)
           var url = "haha.html";   //haha.xml文件路径(与该文件同一文件夹内)
           var method = "GET"; //请求方式
           request.open(method, url);   //向服务器发送请求,接收两个参数,请求方式和资源路径
           request.send(null); //该方法可为已经待命的请求发送指令,若请求方式为get,则不会发送任何数据
           request.onreadystatechange = function() {  //设置onreadystatechange的事件处理函数
               if (request.readyState == 4) {    //代表请求的状态,4为响应发送完毕
                   if (request.status == 200 || request.status == 304) {  //status代表服务器状态码,200(ok),304(没有被修改)
                       var object = request.responseXML;  //得到xml数据,返回的是dom对象
                       var value=document.getElementByTagName(“java”)[0].firstChild.nodeValue  //dom解析得到xml中的值
                       alert(value);  //显示数据

                   }

               }
           }
       }
   }
</script>

③解析json数据

场景解释:点击按钮,立即实现haha.js的内容(浏览器没有刷新)。js文件结构如下:

{“fishcoo”:”Kingsley”}
<script type="text/javascript">
   window.onload = function() {    //页面加载函数
       var button = document.getElementById("button");
       button.onclick = function() {
           var request = new XMLHttpRequest();   //得到XMLHttpRequest对象(不重复上面代码)
           var url = "haha.html";   //haha.js文件路径(与该文件同一文件夹内)
           var method = "GET"; //请求方式
           request.open(method, url);   //向服务器发送请求,接收两个参数,请求方式和资源路径
           request.send(null); //该方法可为已经待命的请求发送指令,若请求方式为get,则不会发送任何数据
           request.onreadystatechange = function() {  //设置onreadystatechange的事件处理函数
               if (request.readyState == 4) {    //代表请求的状态,4为响应发送完毕
                   if (request.status == 200 || request.status == 304) {  //status代表服务器状态码,200(ok),304(没有被修改)
                       var object = request.responseText;  //返回的是json格式的字符串            
                       Var Objson=Eval(“(”+object+”)”);   //eval函数将字符串装换为脚本执行,即转化为json对象
                       alert(Objson.fishcoo);  //显示数据(Kingsley)

                    }

                }
           }
       }
   }
</script>

三.经验总结

看到这里,相信大家对原生态Ajax的创建也有着一定的理解了。虽然现在大家都使用JQuery实现Ajax,但其实就是对原生态的Ajax进行封装,学习的魅力就在于不断的探索,所以了解了解还是有点需要的(比如,在女神面前吹吹牛啊,哈哈)。

老K在之前的学习过程中,犯了挺多错误的,跟大家说说,少走点弯路。

      资源路径要写对,不同文件夹下又如何引用呢,需要大家多多思考。

    ◇ open方法的两个参数,要注意前后顺序,老K就写错了(怪我眼小咯)..... 

    ◇ xml文件,一定要有文件头,否则无法解析。

    ◇ json格式的书写,这个大家一定要注意,一对大括号{},keyvalue之间用冒号且用双引号括起来。

    ◇最后一个,说出来不要问我笨/(ㄒoㄒ)/~~,老K当初做这个练习时,是在单机下玩得,一直不成功。最后查了查度娘,才知道要在web工程实现(所以学习一技术,要了解它的应用场景,灵活使用)。

Java开发工程师的学习道路虽然艰难,但只要有恒心、信心、耐心,就一定有所收获。加油!

java工程师,java经验分享,Ajax原生态



公众号,微信

汇鱼网海峡创乐汇
汇鱼网海峡创乐汇