首页 > 其他分享 >Ajax技术

Ajax技术

时间:2024-04-19 15:00:29浏览次数:30  
标签:function xmlHttp 请求 技术 Ajax var XMLHttpRequest data

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] + " ");
            });
        });
    });
});

标签:function,xmlHttp,请求,技术,Ajax,var,XMLHttpRequest,data
From: https://www.cnblogs.com/hardrockstudy/p/18145890

相关文章

  • 大数据技术
    首先,从Hadoop开始入门学习,因为它是整个大数据生态圈的基石,其它框架都直接或者间接依赖于Hadoop。Hadoop包括:分布式文件系统HDFS、计算框架MapReduce、资源调度YARN。接下来,更加深入学习主流的混合处理框架Spark和Flink。其次,Zookeeper、Hive、Kafka、HBase都是具有代......
  • 云原生技术学习路线图 初阶+中阶+高阶
    一.运维技术栈1.1运维高薪的技术点后端开发涉及到的基础设施技术:docker,k8s,servicemesh,yaml式的声明APICI/CD:jenkins,argo,Tekton,gitlab自动化工具:ansible,shell,ELK微服务:服务网格高薪技术点,重点研究这4个。当然云原生的技术栈内容很多,不可能面面俱到,那就捡重点的进行......
  • NL2SQL技术方案系列(1):NL2API、NL2SQL技术路径选择;LLM选型与Prompt工程技巧,揭秘项目落
    NL2SQL技术方案系列(1):NL2API、NL2SQL技术路径选择;LLM选型与Prompt工程技巧,揭秘项目落地优化之道NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(SpidervsBIRD)全面对比优劣分析[Text2SQL、Text2DSL]NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法......
  • RC4Drop加密技术:原理、实践与安全性探究
    第一章:介绍1.1加密技术的重要性加密技术在当今信息社会中扮演着至关重要的角色。通过加密,我们可以保护敏感信息的机密性,防止信息被未经授权的用户访问、窃取或篡改。加密技术还可以确保数据在传输过程中的安全性,有效防止信息泄露和数据被篡改的风险。在网络通信、电子商务、金......
  • 第一节起重机械的主要技术参数
     第四章起重机械概述第一节起重机械的主要技术参数一、额定起重量G(t)起重机在正常作业时所允许起吊物品的最大重量即有效起重量G,加上取物装置(一般起重机品钩除外,流动式起重机含吊钩)的重量G,称为起重机的额定起重量。如带抓斗和电磁吸盘的起重机其额定起重量等于物品的重量与......
  • 开发者导航:发现技术世界的航向
    开发者导航:发现技术世界的航向在这个飞速发展的数字时代,技术的更新换代日新月异,对于每一位开发者来说,及时获取最新的技术资讯和工具是至关重要的。而正是在这样的背景下,开发者导航应运而生,为广大开发者提供了一个方便快捷的信息获取平台。本文将深入探讨开发者导航的特点与优势,并......
  • 亚马逊云集齐 Claude 3 全家桶;世界数字技术院发布大模型安全国际标准丨 RTE 开发者日
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 数据加密技术在数据安全中的作用
    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。随着信息技术的飞速发展,数据已成为现代社会最宝贵的资产之一。然而,数据的快速增长也带来了安全风险,包括数据泄露、篡改和滥用等。数据加密技术......
  • 光学雨量计雨量传感器技术的优势与应用范围
    光学雨量计雨量传感器技术的优势与应用范围光学雨量计是一种利用光学原理来测量降雨量的仪器。相比于传统的雨量计,光学雨量计具有许多优势,也扩大了其应用范围。 光学雨量计的优势之一就是其高精度和高分辨率。光学雨量计可以实时记录和计算降雨量,精确到0.1毫米的分辨率。相比......
  • 长连接网关技术专题(十一):揭秘腾讯公网TGW网关系统的技术架构演进
    本文由腾讯技术团队peter分享,原题“腾讯网关TGW架构演进之路”,下文进行了排版和内容优化等。1、引言TGW全称TencentGateway,是一套实现多网统一接入,支持自动负载均衡的系统,是公司有10+年历史的网关,因此TGW也被称为公司公网的桥头堡。本文从腾讯公网TGW网关系统的应用场景、......