Json、Ajax

一、JSON

定义:是一种轻量级的数据交换格式

JSON是JavaScript Object Notation缩写

作用:

使用ajax进行前后台数据交换

移动端与服务端的数据交换

JSON数据格式

  1. 对象格式:{"key1": obj1, "key2": obj2, "key3": obj3...}

  2. 数组/集合格式obj1, obj2, obj3...

注:JSON的key是字符串,JSON的value是Object

规则:

  1. 映射用冒号":"表示。//名称:值

  2. 并列的数据之间用逗号","分隔。//名称1:值1,名称2:值2

  3. 映射的集合(对象)用大括号"{}"表示。//{名称1:值1,名称2:值2}

  4. 并列数据的集合(数组)用方括号"\[\]"表示。

{名称1:值1,名称2:值2} {名称1:值1,名称2:值2}

  1. 元素可能具有的类型:string,number,object,array,true,false,null

JSON和XML比较

相比于XML,JSON的优势如下:

  1. 没有结束标签,长度更短,读写更快

  2. 能够直接被JavaScript解析器解析

  3. 可以使用数组

二、Ajax

ajax的最大特点是异步请求、不刷新整个页面,只刷新局部,也叫局部刷新。

同步与异步

同步现象:客户端发送请求到服务器端,当服务器返回响应前,客户端处于等待卡死状态

异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事,不会被卡死

Ajax运行原理

页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到服务器端,在这段时间里,客户端可以任意进行任何操作,直到服务器端将数据返回给Ajax引擎后,会触发设置好的事件,从而执行自定义的js逻辑代码完成某种页面功能。

JQuery的Ajax技术

$.get(url,data,callback,type) //后面三个是可选的,可以没有

$.post(url,data,callback,type)

其中:

url:代表请求的服务器端地址

data:代表请求服务器端的数据(可以是key=value形式,也可以是json格式)

callback:表示服务器端成功响应所有触发的函数

type:表示服务器返回的数据类型(jquery会根据指定的类型自动类型转换)

常用的返回类型:text、json、html等

$.ajax({option1:value1,option2:value2...});

语法:$.ajax({键值对});

常用的option如下:

async:是否异步,默认是true代表异步。(注:get/post方式只能异步,不能配置)

data:发送到服务器的参数,建议使用json格式

dataType:服务器返回的数据类型,常用text和json

success:成功响应执行的函数,对应的类型是function类型

type:请求方式,POST/GET

url:请求服务器端地址

三、JSON数据和Java对象相互转换

常见的JSON解析器:Jsonlib,Gson,fastjson,jackson(SpringMVC内置的解析器)

  1. 导入jackson的相关jar包

  2. 创建jackson核心对象ObjectMapper

  3. 调用ObjectMapper的相关方法进行转换

3.1 JSON转为Java对象

readValue(json字符串数据,Class)

3.2 Java对象转换JSON

writeValueAsString(obj):将对象转为json字符串

复杂java对象转换

  1. List:数组\[\]

  2. Map:对象格式一致 {}

四、前台向后台发送请求

  1. 超链接<a herf=""></a>

  2. form表单

  3. location.herf=""

4.ajax

相关推荐
祁白_1 小时前
防御引擎绕过方法
笔记·web安全·php·防御引擎
志尊宝1 小时前
Vue3 零基础每日笔记(009):watch 侦听器——数据一变就“做事“
vue.js·笔记·缓存
噜~噜~噜~1 小时前
操作系统笔记-3.1.1.4 (选修)覆盖与交换
笔记·操作系统
志尊宝1 小时前
Vue3 零基础每日笔记(011):生命周期钩子——在正确的时间做正确的事
javascript·vue.js·笔记
prog_61032 小时前
【笔记】用cursor手搓cursor(十)
人工智能·笔记·大语言模型·agent
浔溺3 小时前
al+大数据每日学习笔记36
大数据·笔记·学习
浔溺4 小时前
al+大数据每日学习笔记35
大数据·笔记·学习
kyrie_sakura4 小时前
MySQL学习笔记4 -- select的7大子句,子查询
笔记·学习·mysql
进阶的DW4 小时前
LLM上下文管理
笔记
志尊宝6 小时前
Vue3 零基础每日笔记(010):watchEffect——用到谁就自动听谁的“懒人侦听器“
前端·vue.js·笔记