json&Ajax

  • 1.json规则
  • 2.Ajax在jquery里的使用方法
    • 2.0.Ajax的本地加载 $("#div1").load实现的方法(如果没有后台程序的时候用这个)
    • 2.1通过XHR对象创建(已经过时,不推荐使用)
    • 2.2通过Jquery实现Ajax
    • 2.3.jquery$.post实现ajax请求
    • 2.4.jquery$.getJSON加载本地json
    • 2.5.jquery解析后台servlet传来的数据
  • 3.java数据转json格式

1.json规则

导读模块:发展史:
21世纪初,Douglas Crockford寻找一种简便的数据交换格式,
能够在服务器之间交换数据。当时通用的数据交换语言是XML,
但是Douglas Crockford觉得XML的生成和解析都太麻烦,
所以他提出了一种简化格式,也就是Json。

JSON:是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率

简而言之:是存储数据的一种方式/格式

与之类似的技术有:xml

JSON 语法规则:
1.对象表示为键值对
2.数据由逗号分隔
3.花括号保存对象
4.方括号保存数组

例如:

{"name": "中国","province": [{"name": "黑龙江","cities": {"city": ["哈尔滨", "大庆"]}}, {"name": "广东","cities": {"city": ["广州", "深圳", "珠海"]}}, {"name": "台湾","cities": {"city": ["台北", "高雄"]}}, {"name": "新疆","cities": {"city": ["乌鲁木齐"]}}]
}

那么这段json表示的意思为:中国:黑龙江 ,广东,台湾,新疆,以及他们的主要城市
ps:我们也可以用在线工具校验帮我门节省时间和力气:https://www.sojson.com/

拓展:bson
继续拓展:ProtoBuf

2.Ajax在jquery里的使用方法

2.0.Ajax的本地加载 $("#div1").load实现的方法(如果没有后台程序的时候用这个)

  1. 什么是Ajax?

是指一种创建交互式网页应用的网页开发技术
是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术

简而言之:就是异步无刷新(局部刷新)的获取数据的一种技术

参数:

  • 必需的 URL 参数规定您希望加载的 URL:统一资源定位符,可以简单的理解为是网址。

  • 可选的 data 参数规定与请求一同发送的查询字符串键/值对集合:请求时传递的一个参数

  • 可选的 callback 参数是 load() 方法完成后所执行的函数名称

  • callback 参数规定当 load() 方法完成后所要允许的回调函数。

  • 回调函数可以设置不同的参数:

    • responseTxt - 包含调用成功时的结果内容
    • statusTXT - 包含调用的状态
    • xhr - 包含 XMLHttpRequest 对象
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>AJAX获取外部数据信息</title><script src="../js/jquery.js"></script><script>$(function(){$("button").click(function(){//请求文件        //请求成功时的结果内容    状态码  XMLHttpRequest      $("#div1").load("123.txt",function(responseTxt,statusTxt,xhr){if(statusTxt=="success"){alert("请求的内容:"+responseTxt)alert("error:"+xhr.status+":"+xhr.statusText);}              if(statusTxt=="error"){                             //xhr 的 错误信息 alert("状态码:"+xhr.status+":"+xhr.statusText);}});})})</script></head>
<body><div id="div1"><h2>使用 jQuery AJAX 修改文本内容</h2></div>
<button>获取外部内容</button></body>
</html>

2.1通过XHR对象创建(已经过时,不推荐使用)

2.2通过Jquery实现Ajax

基本原理:.通过jquery实现Ajax

  • 在页面引入jquery.js文件
  • 在相应的位置使用即可

需求:

  • 按钮点击使用 ajax进行异步请求
  • 请求回来的数据进行解析
  • 将数据渲染成列表显示到页面中

http请求:

  • get():获取数据
  • post()提交数据

状态码:

  • 4xx 请求出了问题,提供参数,路径有问题, 假如我将文件修改为movie_list.json123,那么此时就会出现错误的状态码404
  • 5xx 服务器内部逻辑,需要开发人员自行修复bug (例如执行查询的时候,可以通过制造“2/0”这样的错误就能看到)
  • 3xx 请求转发(当执行删除,保存等操作之后因为要重定向,所以此时会通过谷歌浏览器看到先执行的状态码为302,然后为200,这就是请求转发)
  • 200:正常

ps:小结:200正确不用管,4X开头建议去页面找参数和路径,5X开头建议去后台看java代码,3X开头是转发(主要是逻辑的对与错)

步骤:

  1. 因为没有后台程序,所以此时我们用一个.json文件来充当数据来源(即是movie_list.json),并且将该文件引入到项目中

  2. 在页面中通过$.getJson来获取数据(因为我是要从.json文件中获取数据的)
    $.getJson():通过 HTTP GET 请求载入 JSON 数据。
    语法:jQuery.getJSON(url, [data], [callback])
    参数: url:发送请求地址。
    data:待发送 Key/value 参数。
    callback:载入成功时回调函数

  3. <body>中创建元素,且进行显示

     <input type="text" value="" name="" /><input type="button" id="get_movies" value="获取电影列表"" /><div id="container"><!--用来展示图片的--><div class="item"><img src=""  width="200px" height="200px"/><p>人行天地间,忽如远行客</p></div></div>
    
  4. 对创建好的元素进行样式的设定

img{width: 200px;height: 200px;border: 1px solid red;float: left;
}
p{height: 200px;line-height: 200px;float: left;text-align: center;margin: 0px;padding: 0px;
}
.item{border: 1px solid blue;height: 204px;padding: 1px;
}
  1. 在页面上引人jquery开始写ajax
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript" src="../jquery/jquery.js" ></script><style type="text/css">img{width: 200px;height: 200px;border: 1px solid red;float: left;}p{height: 200px;line-height: 200px;float: left;text-align: center;margin: 0px;padding: 0px;}.item{border: 1px solid blue;height: 204px;padding: 1px;}</style><script type="application/javascript">$(document).ready(function(){$("#get_movies").click(function (){alert("开始ajax");$.getJSON("movie_list.json",function(data){alert(data.movies[0].img);   alert("data.movies.length:"+data.movies.length);     for (var i = 0; i < data.movies.length; i++){var $img=$("<img src='../img/02.jpg' width='200px' height='200px' />")var $p= $("<p></p>")$img.attr("src",data.movies[i].img);//给img标签设置src属性值$p.text(data.movies[i].tittle)//给p标签设置文本值var   $item=$("<div class='item'></div>")//创建一个div标签$item.append($img).append($p)//将新创建的img标签和段落p标签追加到新创建的div标签中$("#container").append($item)//将div追加到id值为container的div中}})                                       })              })      </script></head><body><!--作者:offline时间:2019-12-09描述:之所以写69行的目的是为了给学生演示一下,当开启ajax请求的时候69行中的文本值没有丢失,又一次验证ajax是异步局部刷新的--><input type="text" value="" name="" /><input type="button" id="get_movies" value="获取电影列表"" /><div id="container"><!--用来展示图片的--><div class="item"><img src=""  width="200px" height="200px"/><p>人行天地间,忽如远行客</p></div></div></body>
</html>

2.3.jquery$.post实现ajax请求

/*$.post(url,params,callback); 第一种:采用post方式提交,中文参数无需转码,在callback中如果要获取json字符串,还需转换一下(但是今天的例子是中没有的,稍后会再将json的)
示意代码:*/
alert("开始请求Ajax");
var gname=$("#gname").val();
alert("管理员姓名:"+gname);
var url="<%=request.getContextPath() %>/manager.do?method=queryAjax";
alert("请求的URl:"+url);$.post(url,{manager_name:gname},function (data){alert("data:"+data);tianxie(data);
});

2.4.jquery$.getJSON加载本地json

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<script src="<%=request.getContextPath()%>/js/jQuery/jquery-1.4.4.js" type="text/javascript"></script>
<style type="text/css">img{width: 200px;height: 200px;border: 1px solid red;float: left;}p{height: 200px;line-height: 200px;float: left;text-align: center;margin: 0px;padding: 0px;}.item{border: 1px solid blue;height: 204px;padding: 1px;}</style>   <script type="application/javascript">$(document).ready(function(){$("#get_movies").click(function (){//获取本地json             回调函数的 返回数据$.getJSON("movie_list.json",function(data){alert(data.movies[0].img);    alert("data.movies.length:"+data.movies.length);     for (var i = 0; i < data.movies.length; i++){var $img=$("<img src='' width='200px' height='200px' />")var $p= $("<p></p>")$img.attr("src",data.movies[i].img);//给img标签设置src属性值$p.text(data.movies[i].tittle)//给p标签设置文本值var    $item=$("<div class='item'></div>")//创建一个div标签$item.append($img).append($p)//将新创建的img标签和段落p标签追加到新创建的div标签中$("#container").append($item)//将div追加到id值为container的div中}})})})</script>
<body><input type="text" value="" name="" /><input type="button" id="get_movies" value="获取电影列表"" /><div id="container"><!--用来展示图片的--><div class="item"><img src=""  width="200px" height="200px"/><p>人行天地间,忽如远行客</p></div></div>
</body>
</html>

2.5.jquery解析后台servlet传来的数据

servlet

 /*** @desc 2.查询全部* @param request* @param response* @throws SQLException * @throws ClassNotFoundException * @throws IOException * @throws ServletException */private void query(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, SQLException, ServletException, IOException {List<Map<String, Object>> list=managerService.queryAll();String jsonStr=jsonOut(list);// request.setAttribute("list", list);//request.getRequestDispatcher("/manage/manager/list.jsp").forward(request, response);System.out.println("jsonStr:"+jsonStr);PrintWriter out = response.getWriter();out.write(jsonStr);out.flush();out.close();}/*** @desc  将数据转变为json格式* @param obj* @return* @throws IOException * @throws JsonMappingException * @throws JsonGenerationException */private String jsonOut(Object obj) throws JsonGenerationException, JsonMappingException, IOException {//1.实例化JackSon包中的核心类ObjectMapper om=new ObjectMapper();//writeValue(参数,obj):直接将传入的对象序列化为json,并且返回给客户端//writeValueAsString(obj):将传入的对象序列化为json,返回给调用者String json = om.writeValueAsString(obj);return json;}

html

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<script src="<%=request.getContextPath()%>/js/jQuery/jquery-1.4.4.js" type="text/javascript"></script>
<style type="text/css">img{width: 200px;height: 200px;border: 1px solid red;float: left;}p{height: 200px;line-height: 200px;float: left;text-align: center;margin: 0px;padding: 0px;}.item{border: 1px solid blue;height: 204px;padding: 1px;}</style>   <script type="application/javascript">$(document).ready(function(){$("#get_movies").click(function (){//获取本地json             回调函数的 返回数据$.getJSON("movie_list.json",function(data){alert(data.movies[0].img);    alert("data.movies.length:"+data.movies.length);     for (var i = 0; i < data.movies.length; i++){var $img=$("<img src='' width='200px' height='200px' />")var $p= $("<p></p>")$img.attr("src",data.movies[i].img);//给img标签设置src属性值$p.text(data.movies[i].tittle)//给p标签设置文本值var    $item=$("<div class='item'></div>")//创建一个div标签$item.append($img).append($p)//将新创建的img标签和段落p标签追加到新创建的div标签中$("#container").append($item)//将div追加到id值为container的div中}})})})</script>
<body><input type="text" value="" name="" /><input type="button" id="get_movies" value="获取电影列表"" /><div id="container"><!--用来展示图片的--><div class="item"><img src=""  width="200px" height="200px"/><p>人行天地间,忽如远行客</p></div></div>
</body>
</html>

3.java数据转json格式

将对象转为json字符串时可以使用ObjectMapper中的两个方法:
writeValue(参数,obj):直接将传入的对象序列化为json,并且返回给客户端
writeValueAsString(obj):将传入的对象序列化为json,返回给调用者

区别:

writeValueAsString(obj)

//1.实例化JackSon包中的核心类ObjectMapper om=new ObjectMapper();Map<String,Object> map = new HashMap<String,Object>();
ObjectMapper mapper=new ObjectMapper();
String josn = mapper.writeValueAsString(map );
response.getWriter().write(josn);

writeValue(参数,obj)

//1.实例化JackSon包中的核心类ObjectMapper om=new ObjectMapper();Map<String,Object> map = new HashMap<String,Object>();
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(response.getOutputStream(),map);

JSONAjax(语法格式+解析json)相关推荐

  1. 新浪微博数据Json格式解析

    2019独角兽企业重金招聘Python工程师标准>>> Json格式解析 json结构的格式就是若干个 键/值(key, value) 对的集合,该集合可以理解为字典(Diction ...

  2. JavaSE——XML与JSON(语法格式、解析内容)

    第6节 XML与JSON 一.XML 1.1 XML简介 XML全称为可扩展标记语言(extensible Markup Language) . 特性: xml具有平台无关性,是一门独立的标记语言: ...

  3. QT解析 JSON 格式的数据

    QT解析 JSON 格式的数据 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON 采用完全独立于语言的文本格式,这些特性使 JSON 成为理想的数 ...

  4. C# 解析JSON格式数据

    JSON简介 JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集.JSON采用完全独立于语言的文本格式,可 ...

  5. php使用 js格式解析,JavaScript解析JSON格式数据的方法示例

    本文实例讲述了JavaScript解析JSON格式数据的方法.分享给大家供大家参考,具体如下: 1.使用JavaScript提供的eval()函数function JsonText1() { var ...

  6. 对JavaScript解析JSON格式数据的理解

    对JavaScript解析JSON格式数据的理解 一.JSON与JavaScript对象的关系 1,JSON的由来: 在21世纪初,Douglas Crockford(Web开发领域最知名的技术权威之 ...

  7. 【Ajax】第一课 Ajax访问Servlet解析Json格式

    概念 ajax(Web数据交互方式),Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett ...

  8. 【Python使用】Python解析JSON数据的基本方法/用MATLAB解析json格式数据

    一 JSON数据格式介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON建构于两种结构:json是Javascript中的对象和数组中的对象, ...

  9. java与JSON语法及解析

    JSON 简介: JSON全称是JavaScript Object Notation,js对象简谱. JSON是一种 轻量级.基于文本的数据交换格式. JSON十分便于阅读和书写,相比XML,文件更小 ...

最新文章

  1. 数据科学Python训练营课程:从初级到高级 Python for Data Science Bootcamp Course:Beginner to Advanced
  2. 2-SAT 问题 详解
  3. integer比较_Java整数缓存Integer.valueOf(127)==Integer.valueOf(127)为True
  4. Eclipse 用Hibernate Tools 生成 .hbm cfg.xml等文件
  5. HAProxy的日志配置以及ACL规则实现负载均衡
  6. yum 和 rpm安装mysql彻底删除
  7. 深度学习(数据集划分偏差方差)
  8. Linux Mint 17 搭建 JSP 环境
  9. oracle报sp20042,oracle中ora-04301故障处理
  10. matplotlib(一):散点图
  11. 查找子串在母串中的位置、编写一个函数实现字符串拼接【数据结构实验报告算法详解】
  12. Javascript七种继承方式
  13. 安卓扫描周围基站信息,获取邻小区频段频点
  14. VAR模型分析联合内生变量的动态关系
  15. 【U盘量产】你的U盘坏了吗
  16. python-opencv图像处理之车牌识别+区域划分+车牌提取+保存图片(2)
  17. 油田生产数据选取进展22.3.12 观察实验
  18. 新网银行模型竞赛点评-小微风控算法大赛-早期风险识别
  19. 去商场淘打折商品时,计算打折以后的价钱是件颇费脑子的事情。例如原价 ¥988,标明打 7 折,则折扣价应该是 ¥988 x 70% = ¥691.60。本题就请你写个程序替客户计算折扣价。
  20. transformer变体

热门文章

  1. 你选择双休还是单休?
  2. gazebo的bumper使用
  3. Java实现 洛谷 P1914 小书童——凯撒密码
  4. python爬虫有多少种方式_python爬虫-----Python访问http的几种方式
  5. Spring官网阅读(四)BeanDefinition(上)
  6. springboot mybatis 分页
  7. 苹果xr黑屏转圈圈解决方法_iPhonexr黑屏转圈怎样解决?
  8. 【程序员如何买股票 三】 掌握股票交易常见术语
  9. OJ题库1015: 计算时间间隔
  10. win7怎样打开无线服务器,Win7怎么设置tplink路由器_Win7安装tplink路由器方法-192路由网...