欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ajax

程序员文章站 2022-04-28 23:53:42
...

Ajax

一、关于

Ajax是一种异步无刷新技术,向服务器发送请求

二、实现Ajax的步骤

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

  3. 打开/准备请求:open(参数1,参数2,参数3)
  • 参数1:请求类型 GET/POST
  • 参数2:请求的路径
  • 参数3:是否异步,默认是异步,true表示异步,false表示同步
  • 发送请求:send(参数:客户端需要传递给后台的数据)
    • GET请求:
    •          如果有参数,参数是直接跟在请求地址后面的,send方法的值设置为null;如果没有参数,send方法的值也设置为null

    • POST请求:
    •          如果有参数,将参数设置到send方法里;如果没有参数,则send方法的值设置为null

  • 接收响应
    • 如果是异步请求,需要等待数据完全响应,再接收数据
    •          xhr.readyState == 4

                监听readyStste的值变化,onreadystatechange事件

    • 先判断响应状态
    •          xhr.status == 200,表示响应成功

    • 获取响应结果
    •          xhr.responseText

    三、AjaxGet同步示例

    <script type="text/javascript">
    		// 1、创建XMLHttpRequest对象
    		var xhr = new XMLHttpRequest();
    		console.log(xhr);
    		
    		
    		// 2、打开/准备请求
    		xhr.open("get","js/data.json",false); // 同步请求	
    		
    		// 3、发送请求
    		xhr.send(null);
    		
    		// 4、接收响应
    		if (xhr.status == 200) { // 先判断响应状态
    			// 获取响应结果
    			var txt = xhr.responseText;
    			console.log(txt);
    		}
    		
    		console.log("同步请求....");
    		
    </script>
    

    运行结果如下:

    Ajax

    四、AjaxGet异步示例

    <script>
        <!--1.创建xmlhttprequest对象-->
        var xhr= new XMLHttpRequest();
    
    //    打开、准备请求
        xhr.open("get","js/data.json",true);
    
    //    发送请求
        xhr.send(null);
    
    //    监听readyState的值变化
        xhr.onreadystatechange=function(){
            console.log(xhr.readyState);
            if(xhr.readyState==4){
    //            接收响应
                if(xhr.status=200){     //先判断响应状态
    //                获取响应结果
                    var txt=xhr.responseText;
                    console.log(txt);
                }
            }
        }
    
        console.log("异步请求..");
    
    </script>
    

    运行结果如下:

    Ajax

    五、AjaxGet封装

    <script>
        //同步
        /*var obj2 = {
         url:"js/data.json?a=1",
         async:false,
         success:function(result){
         console.log(result);
         }
         }
         ajaxGet(obj2);*/
    
        //异步
        var obj3 = {
            url:"js/test.txt",
            async:true,
            success:function(result){
                alert(result);
            }
        }
        ajaxGet(obj3);
    
        function  ajaxGet(obj){
            //创建XMLHttpRequest
            var xhr=new XMLHttpRequest();
            //打开、准备请求
            xhr.open("Get",obj.url,obj.async);
            //发送请求
            xhr.send(null);
            //接收响应
            if(obj.async){
                 //异步请求
                // 监听readyState的值变化,onreadystatechange事件
                xhr.onreadystatechange=function(){
                    console.log(xhr.readyState);
                    if(xhr.readyState==4){
                        //接收响应
                        if(xhr.status==200){
                            var txt=xhr.responseText;
                            obj.success(txt);
                        }
                    }
                }
            }else{
                //同步
                if(xhr.status==200){
                    var  txt =xhr.responseText;
                    obj.success(txt);
                }
            }
        }
    </script>
    

    六、AjaxPost步骤

    与get相似,但在第二步向服务器发送POST请求由于解析机制的原因,需要进行特别的处理。因为POST请求和Web表单提交是不同的,需要使用XHR来模仿表单提交。

    xhr.setRequestHeader(‘Content-Type’,‘application/x-www-form-urlencoded’);

    相关标签: ajax

    上一篇: ajax回调函数

    下一篇: ajax学习