说明:

(0) 本篇博客,写的有点乱;可能以后回头看,就会觉得这篇文章逻辑论乱~~(不过,这篇博客目前起码能勉强自洽)

(1) 目前来看,Ajax请求的使用场景主要区分点有两个;

● 【页面加载的同时,发起ajax请求】还是【页面加载完成后,如通过点击页面的按钮,来发起ajax请求】;

● 【返回的JSON数据需要显示在页面上】还是【返回的JSON不需要显示在页面上,我们只是根据JSON数据的不同,来做不同的下一步决策】;

不同的场景,我们的做法存在些许差异;


(1)第一次接触单纯的Ajax:可以参考:

●【Ajax一:Ajax简介;Ajax实现的三个步骤➡简单演示;】;

●【Ajax二:一个ajax比较拟真的范例】;

●【Ajax三:同步和异步的区别】;

Ajax介绍


说明:

(1) 通过这几篇博客,可以 对Ajax有个基本的认识;

(2) 但是,这几篇博客介绍的内容是单纯的、最原始的Ajax,其编写会比较繁杂;我们在实际开发中,不会这么写;而是利用JQuery或者Vue等封装的框架,来更高效的开发Ajax;

(2)然后,JQuery作为一个以JavaScript为基础的plugin,即JQuery可以简化JavaScript的开发;JQuery也可以简化Ajax的开发;可以参考:

● (https://blog.csdn.net/csucsgoat/article/details/113377602

这篇博客介绍了jQuery简化Ajax开发的SOP;了解了【页面就绪函数】;演示了请求成功success和请求失败error的处理方式;

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
	<script type="text/javascript" src="js/jquery-3.5.1.js" ></script>
	<script>
		$(function(){  // 创建一个页面就绪函数,其用途是在页面加载完毕后,执行这个function里面的代码;
			$.ajax({
				"url":"/ajax/news_list",
				"type":"post",
				"data":"t=tiobe",
				"dataType":"json",  // 在JavaScript中json的key可以不加引号,但是为了严谨和防止混乱,还是加上引号吧;
				"success":function(json){
					console.log(json);
					for(var i=0;i<json.length;i++){
						 // append()的作用可以将append()中的html代码段追加到div的最后
						$("#container").append("<h1>"+json[i].title+"</h1>");
					}
				},
				"error":function(xmlhttp,errorText){     // xmlhttp和errorText哪儿来的???
					console.log(xmlhttp);
					console.log(errorText);
					if(xmlhttp.status == "405"){
						alert("无效的请求方式");
					}else if(xmlhttp.status == "404"){
						alert("未找到url资源");
					}else if(xmlhttp.status == "500"){
						alert("服务器内部错误");
					}else{
						alert("其他异常");
					}
 
				}
			})
 
		});
	</script>
</head>
<body>
	<div id="container"></div>
</body>
</html>

说明:

(1) 这篇博客介绍了 jQuery简化Ajax开发的SOP;

(2) 因为在这篇博客的这个案例中,我们希望在页面加载的时候,ajax请求就向后端发起请求,然后把响应的JSON字符串显示在页面上,所以,我们**把ajax请求的 <script>块,放在了<head标签中;**即,是 通过【页面就绪函数】来演示Ajax的; (即,页面就绪函数的意思是,当我们前端页面加载的时候,同时执行这个函数;也就是,当我们前端页面加载的同时,向后端发起Ajax请求,并将请求的数据渲染到前端页面上;也就是,这个案例中的Ajax实际作用是,在页面初始化的时候起作用)

即,当我们遇到【需要在页面初次加载,即页面初始化的时候,就需要向后端发起Ajax请求的情况时】,可以参考本案例;

(3) 同时,本案例也体现了这样的一个点:前端通过Ajax向后端发起请求,然后服务器返回了一些JSON数据,如果我们想把这些JSON数据显示在页面上:就需要,把这些JSON数据转换为HTML,然后动态的加载到对应的数据容器中;(这是在日常开发中,比较普遍采取的做法)

(4) 演示了请求成功success和请求失败error的处理方式;

(5) 通过【[jQuery中Ajax函数:.post()、.ajax()、.post\(\)、.get()的使用、区别;”)】,能帮助理解jQuery简化Ajax的更详细的内容;

(3)然后,在【(12)MKOA系统(Mybatis项目案例,比较重要!)】这个专栏中,介绍了非页面就绪函数的使用方式;

● 【OA系统九:用户登录二:实现用户登录的后台逻辑代码;完善前台登录页的提交和校验功能;


说明:

(1) 因为这个案例是登录;登录的意思就是,点击页面上的一个按钮,然后再发起ajax请求;即,这个ajax请求不用随着页面的加载而同时进行;所以,我们就不需要把这ajax的<script>写在<head>中了,也就是不需要写成页面就绪函数的形式了;而是,把ajax的<script>写在<body>中了;

那么,当我们以后遇到【点击页面的某个按钮,向后端发起Ajax请求的情况时】,可以参考本案例;

(2) 同时,在登录这个场景下,后端返回JSON数据是登录成功与否的信息;我们不需要把这些信息显示在页面上,而是根据这些信息的不同,采取不同的策略;(比如,如果登录成功,就从登录页跳转到系统首页;如果登录失败,则弹窗提示登录失败);

(3) 在【(12)MKOA系统(Mybatis项目案例,比较重要!)】专栏的其他地方,也大量应用了Ajax技术,其中也有复杂的数据动态提取等内容;如有需要,可以去快速参考;

(4) 同时,在 【SSM开发书评网13:图书列表分页及查询三:图书分页查询(2);(Controller部分;前端部分开发了一半)】以及本专栏的后续博客中,也会大量应用Ajax技术;

随时补充……