**异步技术与传输_Ajax& Json [web基础day21] *

版权声明:文章为作者自己原创文章,转载请注明出处。 https://blog.csdn.net/qq_37128049/article/details/85273090

jQuery高级回顾

* 动画
	* show
	* hide
	* toggle

	* slideUp
	* slideDown
	* slideToggle
	* 	注意:需要设置宽度
	
	* fadeOut
	* fadeIn
	* fadeToggle
* 遍历
	* $("选择器").each(function(i,n){})
	* $.each(数组,function(i,n){})
	* return true/false
* 事件绑定:
	* on/off
	* bind/unbind

	* $("选择器").on("事件名称",function(){})
	* $("选择器").off("事件名称")

* jquery插件导入
	* 在jquery后面引入一个外部js文件。

今日必须掌握:

ajax:
	* 概念
	* jquery使用ajax(重点)
		* $.ajax({})
		* $.get()
		* $.post()
json:
	* json的格式:
	* java对象如何转json字符串(jackson)

今日内容

1.AJAX
2.JSON

AJAX:增强用户体验,非常重要的一门技术(异步);

1.概念:ASYnchronous JavaScript And XML       异步的Javascript和XML
	1.异步和同步:客户端和服务器端相互通信的基础上
		* 客户端必须等待服务端的响应。在等待的期间客户端不能做其他操作。
		* 客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作。
	

		* Ajax是一种无须重新加载整个网页的情况下,能够更新部分网页的技术.[1]
		* 通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用Ajax),如果需要更新内容,必须重载整个网页页面。
		
		* 提升用户的体验。
		* 比如百度搜索联想的功能,不需要更新全部的网页内容,只需要更新指定的搜索值内容。
		* 	1.异步操作   2.(不加载整个网页的情况下)局部更新。
		* 	
2.实现方式:
	1.原生的JS实现方式(了解)
		//创建核心对象
		* var xmlhttp;
		* if(window.XMLHttpRequest)
		* {//code for IE7+,Firefox,Chrome,Opera,Safari
		* 	xmlhttp=new XMLHttpRequest();
		* }
		* else{
		* //code for IE6,IE5
		* 		xmlhttp=new ActiveXobject("Microsoft.XMLHTTP");
		* 		}
		* //发送请求:
		* //参数:  
		* 	1.请求的方式:GET、POST  ,get方式,请求参数在URL后边拼接。send方法为空参。	post方式:请求参数在send方法中定义。
		* 	2.请求的URL:
		* 	3.同步或异步请求:true(异步)或false(同步) 
		* 		
		* xmlhttp.open("GET","text1.txt","true")	
		* xmlhttp.send();
		* //接收并处理来自服务器的响应结果:



	-- 使用ajax既可以发同步请求,也可以发送异步请求。
		* 当xmlhttp对象的就绪状态改变时,触发事件onreadystatechange。
		* xmlhttp.onreadystatechange=function(){
		if(http)

	}

2.JQuery实现方式:
	1.$.ajax()
		* 语法;$.ajax({键值对})
		* 举例:
			* $.ajax({			//使用$.ajax()发送异步请求
			* url:"ajaxServlet",	//请求路径    以后最好是写绝对路径。
			* type:"POST",		//请求方式	
			* data:{"username":"jack","age":23},	//请求参数
			* success:function(data){
			*	 alert(data);		//响应成功后的回调函数
			*	 },
			* error:function{
			* 	alert("出错啦...")	//表示如果请求响应出现错误,会执行的回调函数。
			* 	},
			* 	dataType:"text"			//设置接收到的响应数据的格式。	也可能用到dataType:"json"			dataType:"jsonp"
			* });
	

	-- 实际应用开发过程中,最好是使用绝对路径而不是相对路径。因为使用相对路径容易出现重合问题。
	
	2.$.get():发送get请求
		* 语法:$.get(url,[data],[callback],[type])
			* 参数:
				* url:请求路径
				* data:请求参数
				* callback:回调函数
				* type:响应结果的类型
		举例:
			$.get("请求路径"),{"username":"zs","age":18},
				function(){
					//获取数据后的业务逻辑
					//界面展示
				},"text/json"
	3.$.post():发送post请求
			$.post("请求路径"),{"username":"zs","age":18},
				function(){
					//获取数据后的业务逻辑
					//界面展示
				},"text/json"

	-- ajax请求中$.ajax()的dataType中才包含jsonp,jsonp解决跨域问题。使用jsonp解决跨域问题也会出现线程安全问题。

json

		json的格式
			* json对象
			* json数组
		* 一般会处理复杂的json
		
1.概念:JavaScript Object Notation		 JavaScript对象表示法
	Person p= new Person();
	p.setName("张三");
	p.setAge(23);
	p.setGender("男");

	var p ={"name":"张三","age":23,"gender":"男"};
	
	* json现在多用于存储和交换文本信息的语法。
	* 进行数据的传输
	*
	* 只有对json对象而言,大括号外面不能加引号。
	* 对数组而言,json数组是中括号。

2.语法:
	1.基本规则
		* 数据在名称/值对中:json数据是由键值队构成的
			1. 键用引号(单双都行)引起来,也可以不使用引号
				* 
			2. 数据由逗号分隔:多个键值队由逗号分隔
			3. 花括号保存对象:使用{}定义json格式
			4. 方括号保存数组:[在方括号中]
			5. 对象(在花括号中){"address"{"province":"陕西"...}}
		* 嵌套:数组对象->基本对象索引    对象->键->数组对象->对象  对象->键->索引
	2.获取数据
		1.json对象.键名
		2.json对象["键名"]
		3.3. 数组对象[索引]
		4. 遍历
				 //1.定义基本格式
		        var person = {"name": "张三", age: 23, 'gender': true};
		
		        var ps = [{"name": "张三", "age": 23, "gender": true},
		            {"name": "李四", "age": 24, "gender": true},
		            {"name": "王五", "age": 25, "gender": false}];
		
		
		
		
		        //获取person对象中所有的键和值
		        //for in 循环
		       /* for(var key in person){
		            //这样的方式获取不行。因为相当于  person."name"
		            //alert(key + ":" + person.key);
		            alert(key+":"+person[key]);
		        }*/
		
		       //获取ps中的所有值
		        for (var i = 0; i < ps.length; i++) {
		            var p = ps[i];
		            for(var key in p){
		                alert(key+":"+p[key]);
		            }
		        }
	

	3.Json数据和java对象的相互转换
		* JSON解析器(封装好的一些工具类):
			* 常见的解析器:
				* Jsonlib:官方提供,基本没人用
				* Gson:谷歌提供,轻量级
				* fastjson:阿里巴巴,轻量级
				* jackson:Spring框架内置的解析器
		1.Json对象转为Java对象
		2.java对象转为json
			1.使用步骤:
				1.导入jackson的相关jar包
				2.创建jackson核心对象ObjectMapper
				3.调用ObjectMapper的相关方法进行转换
					* 转换方法:
						* writeValue(参数1,obj):
							* 参数1:
								* File:将obj对象转换为Json字符串,并保存到指定文件中
								* Writer:将obj对象转换为Json字符串,并将json数据填充到字符输出流中
								* OutputStream:将obj对象转换为Json字符串,并将json数据填充到字节输出流中
								* wirteValueAsString(obj):将对象转为json
		
	演示:
		* ObjectMapper om=new ObjectMapper();
		* String result=om.writeValueAsString(对象/数组/集合/map)    常用的方法。


			2.注解:
		* @JsonIgnore:排除属性
		* @JsonFormat(pattern="yyyy-MM-dd")“:属性的格式化
		
		
			3.复杂java对象转换
				1.List:数组
				2.Map:对象格式一致

案例:

* 校验用户名是否存在
	1.服务器响应的数据,在客户端使用时,要想当做json数据格式使用
		* $.get(type):将最后一个参数type指定为"json"
		* 在服务器端设置MIME类型
			response.setContentType("application/json;charset=utf-8");

猜你喜欢

转载自blog.csdn.net/qq_37128049/article/details/85273090