JS中的Ajax发送请求获取数据流程

63 阅读2分钟
			var xhr = null;

			/*if条件判断当前浏览器是否有XMLHttpRequest(),如果有直接创建一个XMLHttpRequest()实

			例对象,如果没有那就是使用else条件下的用于兼容IE8以下IE浏览器的方法*/

			if(window.XMLHttpRequest) {

				xhr = new XMLHttpRequest();

			} else {

				xhr = new ActiveXObject("Microsoft.XMLHTTP");

			}

			//2、准备发送

			/*open方法传入三个参数,第一个是请求方式,第二个是地址,第三个是设置同步或异步,

			基本上设置为true(也就是异步方法)*/

			xhr.open("get","后端URL地址",true);

			//3、执行发送

			xhr.send(null); //send方法中可以传入发送时携带的数据,用于后台验证

	

			/*

			//post请求方法

			xhr.open("post","URL地址",true); //异步post请求

			xhr.setRequestHeader("设置请求头信息");

			xhr.send('携带的请求参数,如:用户名、密码等');

			*/

			

		//4、制定回调函数

		xhr.onreadystatechange = function(){

			if(xhr.readyState == 4){

				if(xhr.status == 200){

				/*responseText用于获取到后端传过来的数据,这里是json格式,如果是XML格式则使用

				//	var result = xhr.responseXML;

				*/

					var result = xhr.responseText; //获取JSON数据

					result = JSON.parse(result); //解析JSON数据

					//对返回数据进行处理,用于更新页面

					var newHtml = document.getElementById("container").innerHTML;

					for(var i=0;i<result.length;i++){

						var item = result[i];

						var name = item.name;

						var sex = item.sex;

						var age = item.age;



						console.log(name,sex,age);

						var tempHtml =`<tr><td>${name}+</td><td>${age}</td><td>${sex}</td></tr>`;

						newHtml += tempHtml;



					}

					//将数据渲染到页面

					document.getElementById("container").innerHTML = newHtml; 

					

				}

			}

		};

	};

</script>
<div>

	<table id="container">

		<tr>

			<th>姓名</th>

			<th>年龄</th>

			<th>性别</th>

		</tr>

		

	</table>

</div>



**以上代码中展示了JavaScript 的Ajax发送请求和获取数据的流程,大致可以分为四步:**



1、创建XMLHttpRequest实例对象

 xhr  =  new XMLHttpRequest( )

2、使用open方法发送请求

xhr.open("请求方法","后端URL地址",true/false);

3、执行发送

xhr.send(请求携带的参数);

4、制定回调函数解析后台返回数据并将其渲染到页面

xhr.onreadystatechange = function(){

	// 方法体

	//responseText用于获取到后端传过来的数据,这里是json格式,如果是XML格式则使用

	//	var result = xhr.responseXML;

	

	var result = xhr.responseText; //获取JSON数据

	result = JSON.parse(result); //解析JSON数据

}




[]( )二、fetch()

----------------------------------------------------------------------------



Document



**以下资料来自[MDN]( )官方可供参考**



// Example POST method implementation:

async function postData(url = '', data = {}) {

// Default options are marked with *

const response = await fetch(url, {

method: 'POST', // *GET, POST, PUT, DELETE, etc.

mode: 'cors', // no-cors, *cors, same-origin

cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached

credentials: 'same-origin', // include, *same-origin, omit

headers: {

  'Content-Type': 'application/json'

  // 'Content-Type': 'application/x-www-form-urlencoded',

},

redirect: 'follow', // manual, *follow, error

referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url

body: JSON.stringify(data) // body data type must match "Content-Type" header

});

return response.json(); // parses JSON response into native JavaScript objects

}

postData('example.com/answer', { answer: 42 })

.then(data => {

console.log(data); // JSON data parsed by `data.json()` call

});




 



[



![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/9ace9d617abc430486f82f9d85450c08~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5L2c6ICFdmlwMTAyNGPkuqTmtYE=:q75.awebp?rk3s=f64ab15b&x-expires=1771003767&x-signature=bmfGMC6BgZSryltJRXtGKDf4d6k%3D)



创作打卡挑战赛 ![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/3ba1071452bc439f830da776747d4ae3~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5L2c6ICFdmlwMTAyNGPkuqTmtYE=:q75.awebp?rk3s=f64ab15b&x-expires=1771003767&x-signature=K17%2FHtKNJ0cTRfLCeHHLFLdBrjs%3D)



赢取流量/现金/CSDN周边激励大奖