美文网首页
AJAX的学习心得

AJAX的学习心得

作者: wish1994 | 来源:发表于2017-10-21 14:42 被阅读0次

AJAX即“Asynchronous Javascript And XML*”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。简而言之,它可以实现在不重新加载整个网页的情况下,对网页的某部分进行更新。

学习了AJAX一周,现在简单地回顾一下学习过程与心得。

AJAX基本步骤

// 1. 创建对象
var xhr = new XMLHttpRequest();

// 2. 准备
        //    参数1: 获取数据的方式: GET(发送请求的参数是在地址栏里面的,内容有限)、POST(发送请求的参数写在协议头里面,地址栏不可见,内容也看不见)。
        //    参数2: 向服务器请求数据的地址 格式: 例如:http://ip:8080/ajax/ajaxtest
        //    参数3: false 代表同步的方式请求数据,true 代表异步。
形式:  xhr.open("GET", "http://127.0.0.1:8080/ajax/ajaxtest", false);

// 3. 发送请求
xhr.send();//发送数据,如果请求方式是POST,send里面要加请求的参数。

// 4. 获取数据
//readystate有0~4可能性,等于4的时候说明请求数据已经收到,过程无误。
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
        if (xhr.status == 200) {
            // 200 说明返回的数据是正常的
            var str = xhr.responseText;//将服务器回复的数据字符串存在str里面,然后通过处理进行下面的操作。
        }
    }
}

AJAX的封装

因为ajax获取数据的步骤基本一致,可以将其封装成函数,以便以后每次获取数据不用再写繁琐的准备步骤。
ajax的封装总的可以分为GET和POST两种方式,然后在两种方式里面分别传入对象参数,这个对象里面包含的属性要有url,是否异步,url后面需要传入的数据参数(下面称为data),以及数据请求成功或失败后执行的回调函数。

(function(){
    ajax=window.ajax={};//先让ajax变成全局对象,然后再给它加上get和post两个属性。
    function translate(obj){
        var str="";
        for(i in obj){
            str+=i+"="+encodeURIComponent(obj[i])+"&";
        }
        str=str.substr(0,str.length-1);
        return str;
    }//定义一个功能,后面用这个功能能够遍历data里面所有参数。

    ajax.get=function(obj){

        if(obj.async==undefined){
            obj.async=true;
        }//默认请求方式是异步。

        if(obj.data==undefined){
            obj.data="";
        }//如果data没有写,那么就表示不用提供请求数据的参数,请求的也就是整个url地址里面的内容。
        var xhr=new XMLHttpRequest();
        var url=obj.url;
        obj.data=translate(obj.data);//将需要传输的参数进行解析
        url+="?"+obj.data;//传输你要获取数据的类型(参数)时,要在url地址后面加上“?”。
        xhr.open("GET",url,obj.async);
        xhr.send();

        //如果异步,当xhr.readystate==4,xhr.status==200时,说明请求过程无误,也接收到了数据,然后将所得到的数据存在str里面,再执行回调函数对str里面的数据进行操作。
        if(obj.async==true){
            xhr.onreadystatechange=function(){
                if(xhr.readyState==4){
                    if(xhr.status==200){
                        var str=xhr.responseText;
                        obj.sucess&&obj.sucess(str);

                    }else{
                        obj.fail&&obj.fail();
                    }
                }

            }
        }else{  //同步方式是一样的道理,不过少了xhr.readystate==4的要求。
            if(xhr.status==200){
                var str=xhr.responseText;
                obj.sucess&&obj.sucess(str);

            }else{
                obj.fail&&obj.fail();
            }
        }
    }

    ajax.post=function(obj){
        if(obj.async==undefined){
            obj.async=true;
        }
        if(obj.data==undefined){
            obj.data="";
        }
        var xhr=new XMLHttpRequest();
        var url=obj.url;
        xhr.open("POST",url,obj.async);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//POST传输方式跟GET不同的是,要加上上面这段话,设置协议头。
        obj.data=translate(obj.data);        
        xhr.send(obj.data);//然后再send里面加上需要传输的参数。
        if(obj.async==true){
            xhr.onreadystatechange=function(){
                if(xhr.readyState==4){
                    if(xhr.status==200){
                        var str=xhr.responseText;
                        obj.sucess&&obj.sucess(str);

                    }else{
                        obj.fail&&obj.fail();
                    }
                }

            }
        }else{
            if(xhr.status==200){
                var str=xhr.responseText;
                obj.sucess&&obj.sucess(str);

            }else{
                obj.fail&&obj.fail();
            }
        }
    }

})()

AJAX的局限性

ajax请求数据是无法跨域的,只有通过script标签引入js文件来实现跨域功能。

<script src="http://www.css88.com/doc/underscore1.8.2/underscore-min.js "></script>

上面就是跨域获取外部js文件的一种形式。以后通过这种方式,你可以调用别人准备好的js库里面的函数,无需下载,确实很方便。
上面就是这周所学ajax的一点学习心得,里面具体的功能还是需要自己动手才能体会到的。

相关文章

  • AJAX的学习心得

    AJAX即“Asynchronous Javascript And XML*”(异步JavaScript和XML)...

  • ajax学习心得

    http:是计算机通过网络进行通信的规则,去和web服务区请求信息和服务,是一种无状态协议(不保留持久的连接,没有...

  • ajax学习心得

    ajax是客户端向服务端请求的一种方式。允许客户端脚本发送HTTP请求,去请求服务器的数据来创建动态网页,可...

  • AJAX方法的应用和学习心得

    看着熟悉的四个字母,可要知道它在Web前端中所代表的含义,它是一项新技术,并不是新兴的编程语言。AJAX (阿贾克...

  • JavaScript进阶知识点--AJAX及JSON

    AJAX 关于 AJAX 什么是 AJAX AJAX 的全称是 Asynchronous JavaScript a...

  • js之AJAX复习

    异步交互和同步交互 什么是Ajax? Ajax的工作原理。 Ajax包含的技术: Ajax的缺陷: Ajax的核心...

  • HTML5权威指南 | 第五部分 高级功能

    三十二、使用AJAX(上) Ajax起步: 使用Ajax事件: Ajax请求的错误处理: 中止Ajax请求: 三十...

  • ajax

    1、什么是ajax? 2、ajax的原理 3、ajax的核心对象 4、ajax的优点: ajax的缺点: 被jqu...

  • $.ajax()方法

    $.ajax()的实例: $.ajax({ url: "/carrots-admin-ajax/a/logian"...

  • ajax的运用

    交互 form 提交: ajax: jquery的ajax: ajax做交互

网友评论

      本文标题:AJAX的学习心得

      本文链接:https://www.haomeiwen.com/subject/mhtiuxtx.html