最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • AJAX基础知识

    正文概述 掘金(Meng_W)   2021-01-24   480

    AJAX

    同步请求和异步请求

    同步请求是指当浏览器发出请求后,只有当服务端完成后响应回来,才能看到响应结果,这个过程中,浏览器不能做其它事情,只能等待服务端的响应。 异步请求是指当浏览器发出请求后,等待服务端的响应,在此期间,浏览器不阻塞,你可以去做其它的事情,直到服务端的响应结束,通知你回来。 (本质是浏览器支持多线程)

    所以,我们看到的同步请求就是整个浏览器的页面都会刷新一次。 而异步请求是局部刷新,它不会整体刷新页面。 本质来说,异步请求就是由浏览器开启一个新线程去发送请求到服务端,而主线程该干嘛就干,不受影响,直到这个异步线程从服务端响应回来,然后,主线程就要针对这个回来的响应进行处理。

    AJAX的对象

    XMLHttpRequest对象,专门用来发送异步请求的对象,当然,也可以发送同步请求(同步写超链接就可以)。 这个对象从IE7以后,IE的所有版本都是支持此对象的。而FF, safari, chrome都是支持的。

    AJAX代码编写的步骤

    1.创建XMLHttpRequest对象

    var xmlhttp;
    function ajax_demo(){
    	//1.
        if(window.XMLHttpRequest){
        //IE7+, FF, Chrome, Safari, Opera, ..
        	xmlhttp = new XMLHttpRequest();
        } else{
        	//IE5, IE6
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
        }
    }
    

    2.注册回调函数。

    var xmlhttp;
    function ajax_demo(){
    	//1.
        if(window.XMLHttpRequest){
        //IE7+, FF, Chrome, Safari, Opera, ..
        	xmlhttp = new XMLHttpRequest();
        } else{
        	//IE5, IE6
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
        }
        //2.
        xmlhttp.onreadystatechange = function(){
        	//执行你的异步的代码逻辑
            //..
            //..
        }
    }
        
    

    3.建立与服务端的连接(http的连接属于short connection, 与jdbc不同。)

    var xmlhttp;
    function ajax_demo(){
    	//1.
        if(window.XMLHttpRequest){
        //IE7+, FF, Chrome, Safari, Opera, ..
        	xmlhttp = new XMLHttpRequest();
        } else{
        	//IE5, IE6
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
        }
        //2.
        xmlhttp.onreadystatechange = function(){
        	//执行你的异步的代码逻辑
            //..
            //..
        }
        //3.
        xmlhttp.open("POST|GET", "目标URL", true|false); //true 表示异步,false 表示同步
    }
    

    4.发送请求

    var xmlhttp;
    function ajax_demo(){
    	//1.
        if(window.XMLHttpRequest){
        //IE7+, FF, Chrome, Safari, Opera, ..
        	xmlhttp = new XMLHttpRequest();
        } else{
        	//IE5, IE6
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
        }
        //2.
        xmlhttp.onreadystatechange = function(){
        	//执行你的异步的代码逻辑
            //当这个readyState的值变为4的时候,我们才有兴趣去处理。其他的情况我们不关心。
            if(xmlhttp.readyState == 4){
            	//..
                if(xmlhttp.status == 200){
    				// 表示服务端正常响应客户端
                    ...
                    var str = xmlhttp.responseText;
                    // 如果服务端传递过来的是json字符串,则我们可以通过如下方法把它解析成JSON对象
                    var json = JSON.parse(str);
                }
            }
            //..
        }
        //3.
        xmlhttp.open("POST|GET", "目标URL", true|false); //true 表示异步,false 表示同步
        xmlhttp.send(); //如果要传递数据给服务器,把数据作为参数传过去
    }
    

    XMLHttpRequest对象的属性

    1.readyState属性 (请求状态变化)

    此属性0-4的值,共计5种状态
    0 表示请求未初始化
    1 服务器连接已建立
    2 请求已接受
    3 请求处理中
    4 请求已完成,且响应已就绪
    
    

    2.status 属性 (响应状态变化)

    响应的状态码,这个状态码也有5种类型的值,分别是:
    1xx  ...
    2xx  代表服务端正常响应
    3xx  代表服务端资源没有发生改变
    4xx  代表资源错误
    5xx  代表服务端错误
    
    1. responseText和responseXML
    responseText表示以文本的信息获取服务端的响应,获取的就是字符串。
    responseXML 当服务端以xml格式返回给客户端时,则使用此属性去接受,获取的就是DOM对象。(现在用的很少)
    
    • JSON.parse(str)

      JSON字符串解析成对象

    • JSON.stringify(obj)

      对象格式化为字符串,该字符串应该符合JSON格式,并且可以被JSON.parse()方法还原

    1. 使用POST提交请求要设置请求头

    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");


    起源地下载网 » AJAX基础知识

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元