Ajax技术

Ajax技术

一、Ajax技术简介

什么是 Ajax?

AJAX = 异步 JavaScript  + XML。

AJAX 是一种用于创建快速动态网页的技术(客户端)。

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

传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。
  
总结:AJAX 是一种在无需重新加载(刷新)整个网页的情况下,能够更新部分网页的技术。

二、Ajax工作原理

1646981556101

以上工作原理流程的总结和梳理:

创建xhr对象—>发送请求—>创建response对象—>返回数据到客户端—>客户端接收数据并处理—>无刷新更新页面内容

三、Ajax中XMLHttpRequest对象

3.1、XMLHttpRequest的作用

1、XMLHttpRequest对象是 AJAX 的基础。

2、所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。

3、XMLHttpRequest 对象用于和后台与服务器交换数据。并且可以在不重新加载整个网页的情况下,对网页的某部分进

行局部更新。

3.2、如何创建XMLHttpRequest对象

创建 XMLHttpRequest 对象的时候,存在不同的浏览器兼容性的问题。

1、所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。

  创建 XMLHttpRequest 对象的语法:
  
  var xmlhttp=new XMLHttpRequest();

2、老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:

  创建 XMLHttpRequest 对象的语法:
  
  var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

综上所述,我们可以定义一个函数,专门负责来创建XMLHttpRequest对象;

//定义一个函数,创建出XMLHttpRequest对象
function    createXhr() {
       var xmlHttp;
       try
        {
       // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
        }
        catch (e)
        {

      // Internet Explorer
       try
          {
          xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          }
       catch (e)
          {
          try
             {
             xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
             }
          catch (e)
             {
                alert("您的浏览器不支持AJAX!");
             return false;
             }
          }
        }
    return xmlHttp;
}

三、如何请求服务器端

3.1、GET方式的请求

var  xmlHttp = createXhr();
	    
//设置参数标准
xmlHttp.open("GET", "myAction.action", true);
//发送请求
xmlHttp.send(); 

如果在请求的过程中,需要向服务器传递参数,则直接在URL地址后通过 ? 和 &符号进行传递即可。

3.2、POST方式的请求

var  xmlHttp = createXhr();
	    
//设置参数标准
xmlHttp.open("POST", "myAction.action", true);

//设置允许写入数据到协议体的包中
xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

//传入相应的数据信息
xmlHttp.send("m=list&name=admin&pwd=123456");

若果没有参数需要传递到服务器端的话,则不需要设置请求头 ,send函数中也不需要传递参数。

前面所讲内容的总结:

1、就是我们如何通过Ajax技术实现对服务器端发出请求。

2、在不同的请求方式下,如何向服务器传递参数的操作。

四、Ajax如何实现响应

4.1、Ajax响应情况介绍

Ajax服务器响应?

需要获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。  

1647051562721

responseText 属性
如果来自服务器的响应并非 XML,请使用 responseText 属性。

responseXML 属性
如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性。
     
提示:Ajax请求可以返回的数据格式类型:文本、HTML、JSON、XML

4.2、借助属性获取响应结果

//onreadystatechange事件属性的使用 
xmlHttp.onreadystatechange = function(){
	    	//响应全部就绪(通过状态码来进行确定)
	    	if(xmlHttp.readyState==4&&xmlHttp.status==200){
	    		    //获取数据,并进行显示
	    		  var   content =  xmlHttp.responseText;
	    		  var  sp =   document.getElementById("sp");
	    		  sp.innerHTML = content;
	    	}
};
	    

提示!

responseText属性:可以针对服务器端响应的html 、 文本 、json格式可以进行接收;

responseXML属性:仅仅只是针对服务器端响应的xml格式进行接收;

备注!json格式其实就是一个带有格式的字符串,比较的轻巧,经常进行使用(配合js比较适合);

五、响应的各种数据格式

1647224895544

Ajax请求可以返回的数据格式类型:文本、HTML、JSON、XML
//定义一个函数,创建出XMLHttpRequest对象
function    createXhr() {
			var xmlHttp = null;
			try {
				// Firefox, Opera 8.0+, Safari
				xmlHttp = new XMLHttpRequest();
			} catch (e) {
				// Internet Explorer
				try {
					xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
				} catch (e) {
					xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
				}
			}
			return xmlHttp;
}

/**
 * 接收响应的HTML格式
 */
function    sendPostRequest(){
	//调用函数创建发送器的对象
	 var  xmlHttp = createXhr();
	    //设置参数标准
	    xmlHttp.open("POST", "myAction.action", true);
	    //设置允许写入数据到协议体的包中
	    xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	    //传入相应的数据信息
	    xmlHttp.send("m=post&name=admin&pwd=123456");
	    
	    xmlHttp.onreadystatechange = function(){
	    	//响应全部就绪
	    	if(xmlHttp.readyState==4&&xmlHttp.status==200){
	    		    //获取数据
	    		  var   content =  xmlHttp.responseText;
	    		  var  sp =   document.getElementById("sp");
	    		  sp.innerHTML = content;
	    	}
	    };    
}


/**
 * 接收响应的是一个文本内容
 */
function   sendGetRequest(){
	//调用函数创建发送器的对象
	 var  xmlHttp = createXhr();
	    
	    //设置参数标准
	    xmlHttp.open("GET", "myAction.action?m=get", true);
	    //发送请求
	    xmlHttp.send(null);
	    
	    xmlHttp.onreadystatechange = function(){
	    	//响应全部就绪
	    	if(xmlHttp.readyState==4&&xmlHttp.status==200){
	    		    //获取数据,这个数据是一个纯文本的形式ok
	    		  var   content =  xmlHttp.responseText;
	    		  alert(content);
	    	}
	    };    
	
}


/**
 * 接收响应的是json格式
 */
function   sendGetRequestJson(){
	
	//调用函数创建发送器的对象
	 var  xmlHttp = createXhr();
	    
	    //设置参数标准
	    xmlHttp.open("GET", "myAction.action?m=json", true);
	    //发送请求
	    xmlHttp.send(null);
	    
	    xmlHttp.onreadystatechange = function(){
	    	//响应全部就绪
	    	if(xmlHttp.readyState==4&&xmlHttp.status==200){
	    		    //获取数据,这个数据是一个json格式的字符串
	    		  var   jsonStr =  xmlHttp.responseText;
	    		 // alert(jsonStr);
	    		  
	    		  //js中如何解析json
	    		  
	    		  //使用eval转换函数进行  json格式字符串---->json对象的  转换过程;   (第一种方式)
	    		 //var  jsonObj =  eval('('+jsonStr+')');
	    		 
	    		  //使用JSON中的parse函数来进行转换   (第二种方式)【推荐】
	    		  var  jsonObj = JSON.parse(jsonStr);  //预先检查jsonStr的格式是否正确
	    		 
	    		 //从json对象中获取数据
	    		 alert(jsonObj.name);
	    		 alert(jsonObj.age);
	    	}
	    };    	
}

提示!

有关json的相关信息,可以在runoob.com中进行了解(作为一个补充的辅助学习资料);

六、Jquery实现Ajax

6.1、$.get()

在jQuery中 $.get()函数的功能比较单一
它是专门用来发起get请求的 从而将服务器上的资源请求到客户端来使用
$.get()函数的语法如下
$.get( url , [data] ,{callback})
第一个参数url 是字符串类型 也是必须要有的 他代表 要请求的资源地址
第二个参数data 是要以对象方式 它代表请求资源期间需要携带的参数 如果没有 就全部返回
第三个参数 callback 是要以函数的方式 他代表请求成功时 的回调函数 它也是可以没有的

我们设定一个按钮 点击就使用get请求方式按照资源地址获取数据

不带参数:

$('#btn').on('click', function(){
         $.get('http://www.liulongbin.top:3006/api/getbooks',function(data){
           console.log(data);
         })
});

携带参数:

$('#btn').on('click', function(){
     $.get('http://www.liulongbin.top:3006/api/getbooks',{id:1},function(data){
       console.log(data);
     })
})

6.2、$.post()

在jQuery中 $.post()函数的功能比较单一
它是专门用来发起post请求的 从而将服务器上的资源请求到客户端来使用
$.post()函数的语法如下
$.post( url , [data] ,{callback})
第一个参数url 是字符串类型 也是必须要有的 他代表 要提交的资源地址
第二个参数data 是要以对象方式 它代表请求资源期间需要提交的数据 他也是可以没有的
第三个参数 callback 是要以函数的方式 他代表数据提交成功时 的回调函数 它也是可以没有的

语法如下:

<button>POST</button>
<script>
      $(function () {
        $("button").on("click", function () {
          $.post(
            "http://www.liulongbin.top:3006/api/addbook",
            { bookname: "水浒传" },
            function (data) {
              console.log(data);
            }
          );
        });
      });
</script>

6.3、ajax()

我们之前上面两个方法过于单一
我们jQuery给我们提供了ajax方法
语法如下
$.ajax({
    type:'', 代表请求的方式 可以是GET和POST 注意是大写
    url:'', 代表请求的url地址
    data:{}, 代表要提交给服务器的数据
    dataType:'', 表示服务器预计返回的数据格式类型
    succes:function(data){} 请求成功的回调函数
})

使用$.ajax()发起get请求

使用$.ajax()发起get请求, 只需要将type属性的值设置为‘GET’ 即可:

<button> 点击 </button>
<script>
     $(function () {
      $('button').on('click', function(){
        $.ajax({
          type: 'GET',
          url: 'http://www.liulongbin.top:3006/api/getbooks',
          data:{ id : 1},
          success: function(data){
            console.log(data);
          }
        })
      })      
     })
</script>

使用$.ajax() 发起POST请求

使用$.ajax()发起post请求, 只需要将type属性的值设置为‘POST’ 即可:

<button> 点击 </button>
<script>
    $(function(){
      $('button').on('click', function(){
       $.ajax({
         
        type: 'POST',
         url: 'http://www.liulongbin.top:3006/api/addbook',
         data:{ bookname:'水浒传',
                 author: '施耐庵',

        },
         success: function(res){
           console.log(res);
          }

       })
     })
    })
</script>

6.4、getJSON()

getJSON() 方法使用 AJAX 的 HTTP GET 请求获取 JSON 数据。

$(document).ready(function(){
    $("button").click(function(){
        $.getJSON("demo_ajax_json.js",function(data){
            $.each(data, function(i){
                $("div").append(data[i] + " ");
            });
        });
    });
});
posted @ 2024-04-19 14:57  疏影橫斜水清淺  阅读(73)  评论(0编辑  收藏  举报