《JavaScript学习笔记》:Ajax的应用

前端之家收集整理的这篇文章主要介绍了《JavaScript学习笔记》:Ajax的应用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

《JavaScript学习笔记》:Ajax的应用

@H_301_3@AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。

@H_301_3@下面先介绍 AJAX 的工作原理。

1、 AJAX 的工作原理

@H_301_3@AJAX 的工作原理在http://www.w3school.com.cn/ajax/ajax_example.asp有比较详细的解释,这里就不再过多的解释。

@H_301_3@AJAX的实现需要如下的4个步骤:

@H_301_3@1、创建对象

@H_301_3@2、连接服务器

@H_301_3@3、发送请求

@H_301_3@4、接收数据

@H_301_3@具体实现代码如下:

// JavaScript Document
    function my_ajax(url,funSucce,funFail) {
        //实现Ajax需要如下的4个步骤
        //1、创建对象,为解决兼容器,使用if
        var oAjax=null;
        if(window.XMLHttpRequest)
        {   
            //所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象
            oAjax = new XMLHttpRequest();
        }
        else
        {
            //老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象
            oAjax = new ActiveXObject("Microsoft.XMLHTTP"); 
        }
        //2、连接服务器 open(请求的方式(get or post),url,是异步(true)还是同步(false))
        //为了避免得到缓存,向 URL 添加一个唯一的 ID (可使用:Math.random())
        oAjax.open('get',url+'?t='+new Date().getTime(),true);//

        //3、发送请求 
        oAjax.send();

        //4、接收数据
        oAjax.onreadystatechange=function() {
            /* oAjax.readyState的状态有如下的5种情况 0: 请求未初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理中 4: 请求已完成,且响应已就绪 */
            if (oAjax.readyState==4)//接收完成
            {
                if(oAjax.status==200)//成功
                {
                    //alert('成功'+oAjax.responseText);
                    funSucce(oAjax.responseText);
                }
                else
                {
                    funFail(oAjax.status);
                }

             }                
        };
    }
@H_301_3@我们将AJAX的实现封装为了一个函数,供我们调用。下面我们就来基于上面的函数来进行一些AJAX的应用

2、AJAX的应用

2.1使用AJAX读取txt文件中的内容,并显示

@H_301_3@实现代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <Meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>标题文档</title>
    <script src="my_ajax.js"> </script>
    <script> window.onload=function() { var oBtn = document.getElementById('btn1'); oBtn.onclick=function() { my_ajax('aaa.txt',function(str) { alert('读取成功:'+str) ; },function(state) { alert('读取失败:'+state); }); } }; </script>
    </head>

    <body>
    <input id="btn1" type="button" value="读取文件" />
    </body>
    </html>
@H_301_3@除了读一般的文本文件,我们还可以读文件中存储的是数组、json数据,然后对读出来的数据进行一些处理。

2.2 使用AJAX读取数组元素

@H_301_3@例如:如果有一个文件存储的内容是:[1,2,3,4,5,6],要得到这个数组的第一个元素1应该如何来做呢??

@H_301_3@由于从文件读取出来的数据均为string 类型,因此这里需要使用eval函数来进行处理得到数组类型的数据。

@H_301_3@实现代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <Meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>标题文档</title>

    <script src="my_ajax.js"></script>

    <script> window.onload=function() { var oBtn= document.getElementById('btn1') oBtn.onclick=function() { my_ajax('read_arr2.txt',function(str) { //alert(typeof str); var arr=eval(str) alert(arr[0]) //alert(typeof arr); },function(state) { alert('获取失败'+state); }); }; }; </script>
    </head>

    <body>
    <input id="btn1" type="button" value="读取文件" />
    </body>
    </html>

2.3 使用AJAX读取json数据

@H_301_3@既然可以读取数组数据,那么可能也就可以读取json数据,然后我们就可以在读取数据之后进行一些处理操作。

@H_301_3@假如一个文件中存储的内容为:[{a:20,b:23},{a:88,b:34},{a:98,b:64}]

@H_301_3@那么应该如何来取出里面的json数据了。

@H_301_3@有了前面的经验,这个也就比较简单了。

@H_301_3@方法为:先将文本中的内容读取出来,利用eval函数转换为json类型的数组,然后进行操作。

@H_301_3@这里要注意的是,如果文本文件中的内容为:{a:20,b:23},是不能够利用eval函数将数据从string类型转化json数据的,还会报不知名的某种错误

@H_301_3@实现代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <Meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>标题文档</title>

    <script src="my_ajax.js"></script>

    <script> window.onload=function() { var oBtn= document.getElementById('btn1'); oBtn.onclick=function() { my_ajax('read_arr2.txt',function(str) { var oJson=eval(str); alert(oJson[0].b); },function(state) { alert('获取失败'+state); }); }; }; </script>
    </head>

    <body>
    <input id="btn1" type="button" value="读取文件" />
    </body>
    </html>

2.4 使用AJAX读取json的另一个例子

@H_301_3@关于json,我们来看一个比较实际的例子。

@H_301_3@假如文本文件中存储的内容如下:
[{user:”张三”,pass:”123”},{user:”李四”,pass:”456”},{user:”王五”,pass:”789”}]

@H_301_3@我们需要使用AJAX来读取文件,并将每个json数据组合成一个li在网页中显示

@H_301_3@这个例子就需要我们前面学习的添加子节点等知识点来解决了。

@H_301_3@实现代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <Meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>标题文档</title>
    <script src="my_ajax.js"></script>
    <script> window.onload=function() { var oBtn = document.getElementById('btn1'); var oDiv = document.getElementById('div1'); var oUl=document.getElementsByTagName('ul')[0]; oBtn.onclick=function() { my_ajax('readAndCreate.txt',function(str) { var arr = eval(str); for(var i=0;i<arr.length;i++) { var oLi = document.createElement('li'); oLi.innerHTML='用户名:'+arr[i].user+',密码:'+arr[i].pass; oUl.appendChild(oLi); } },function(state) { alert('失败'); }); }; }; </script>
    </head>

    <body>
    <input id="btn1" type="button" value="读取" />
    <div id="div1">

        <ul id="ul1">
        </ul>
    </div>
    </body>
    </html>
@H_301_3@以上就是关于AJAX的原理和一些简单的应用。

原文链接:https://www.f2er.com/ajax/162121.html

猜你在找的Ajax相关文章