JSON&Ajax入门学习
JSON
JSON介绍
JSON全名:JavaScript Object Notation JS对象表示,是一种轻量级的数剧交换格式,它基于ECMAScript的一个子集,采用完全独立于变成语言的文本格式来存储和表示数据。
JSON语法
[]表示数组,{}表示对象,""表示是属性名或字符串类型的值,: 表示属性和值之间的分割符,,表示多个属性的间隔符或者是多个元素的间隔符。Json的数据类型与js类似。
示例
<script> // 使用JSON创建对象 var stus = {name:"Jack",age:"19",sex:"女"} // 打印stus对象的各个属性 console.log(stus.name+":"+stus.age+":"+stus.sex) // JSON字符串转化为JSON对象 var str = '{"name":"Tom","age":19,"sex":"女"}'; let str1 = JSON.parse(str); console.log(str1) // JSON对象转化为字符串 var stus = {name:"Cube",age:"19",sex:"男"}; let s = JSON.stringify(stus); console.log(s) </script>
FastJson解析
通过java来实现FastJson解析,使用前要先导入fastjson的jar包。
public class FastJson { public static void main(String[] args) { // JSON字符串转化为实体类对象 String json1 = "{'id':1,'name':'一班', 'stus':[{'id':001,'name':'Cube','age':20}]}"; // 实体类要存在 Grade grade = JSON.parseObject(json1, Grade.class); System.out.println(grade); //结果为:Grade{id=1, name='一班', stus=[Student{id=1, name='Cube', age=20}]} // 将实体类对象转化为JSON字符串 ArrayList<Student> list = new ArrayList<Student>(); Student stu = new Student(2,"某某",19); list.add(stu); Grade grade1 = new Grade(2,"二班",list); String s = JSON.toJSONString(grade1); System.out.println(s); //结果为:{"id":2,"name":"二班","stus":[{"age":19,"id":2,"name":"徐杰"}]} } } // FastJson提供了一些使用方法 //控制不序列化某些属性 @JSONField(serialize=false) 默认为true 意思为不让哪个属性参与JSON解析,使用方法:直接在属性名上面加注解 //控制输出 1. SerializerFeature.PrettyFormat --> 美化输出 2. SerializerFeature.WriteMapNullValue --> null也输出 3. SerializerFeature.WriteNullStringAsEmpty --> null输出为"" 4. SerializerFeature.DisableCircularReferenceDetect --> 循环引用检测,意思是如果json对象中出现两个相同的对象,默认是不输出,如果加上这个参数,则会输出
AJAX
AJAX介绍
AJAX是一种在无需重新加载整个网页的情况下,能够实现局部更新的技术。
AJAX = 异步JavaSript和XML–>Asynchronized JavaScript And XML.AJAX是一种用于快速创建动态网页的技术,通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新,也就是可以不用重新加载整个页面而只对网页的某个部分进行更新。
AJAX的使用
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>demo</title> </head> <body> <div id="div1">呜呜呜呜</div> <button οnclick="changes()">ajax修改内容</button> <script> function changes() { // 1. 创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 2. 设置回调函数 xhr.onreadystatechange = function () { //服务器状态和响应码 if(xhr.readyState == 4 && xhr.status == 200){ //动态修改局部内容 document.getElementById("div1").innerText = xhr.responseText; } } // 3. 打开连接,参数分别为提交方式,请求地址,异步/同步 默认为异步 xhr.open("GET","/test",true); // 4. 发送请求 xhr.send(); } </script> </body> </html>
//以及对应的Servlet @WebServlet("/test") public class TestServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("utf-8"); response.getWriter().println("服务器回你的消息!"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
XMLHttpRequest对象
XMlHttpRequest对象是AJAX的基础,所有现代浏览器均支持且内建此对象(IE5和IE6使用ActiveXObject),XMLHttpRequest用于在后台与服务器交互数据。
使用:
var xmlhttp; if(window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
onreadystatechange回调函数
当请求被发送到服务器时,我们需要执行一些基于响应的任务,每当readyState改变时,就会触发onreadystatechange事件,readyState属性存有XMLHttpRequest的状态信息。下面为XMLHttpRequest对象的三个重要的属性:
属性 | 描述 |
---|---|
onreadystatechange | 存储函数(或函数名),每当readyState属性值改变时,就会调用存储的函数 |
readyState | 存有XMLHttpRequest的状态,从0-4发生变化。0:请求未初始化,1:服务器连接已建立,2:请求已接收,3:请求处理中,4:请求已完成,且响应就绪 |
status | 服务器状态码,常见:200:“OK”,404:“资源不存在” |
// 例如:这里的readyState一共会变化4次,从1-4 var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { //服务器状态和响应码 if(xhr.readyState == 4 && xhr.status == 200){ //动态修改局部内容 document.getElementById("div1").innerText = xhr.responseText; } }
XMLHttpRequest请求
将请求发送到服务器,就得用到XMLHttpRequest对象的open()和send()方法
方法 | 描述 |
---|---|
open(method,url,async) | method:请求的类型,url:请求资源的路径,async:true(异步)或false(同步),默认为异步 |
send(string) | 将请求发到服务器。string:仅用于POST请求 |
注意事项:post提交的数据要以表单形式提交,也就是在提交之前要加上:
new XMLHttpRequest().setRequestHeader("Content-type","application/x-www-form-urlencoded;chatset=utf-8")
XMLHttpRequest响应
获取来自服务器的响应,使用XMLHttpRequest对象的responseText和responseXML属性
responseText返回字符串形式的响应,responseXML返回以XML形式的响应,故需要对XML进行解析。
- 点赞
- 收藏
- 分享
- 文章举报
- 安卓开发,与后台服务器对接中,JSON解析入门学习
- [知了堂学习笔记] Ajax入门
- [知了堂学习笔记]_Ajax之解析Json
- Ajax学习摘录之第一部分 Ajax 入门简介
- AJAX异步请求入门与json数据格式
- AJAX基础学习4之JSON
- JavaScript学习笔记一AJAX和JSON
- ajax 判断浏览器,入门学习文档
- ajax入门 json格式(①异步校验用户名是否存在 ②站内搜索)
- JSP学习笔记(十四):关于ajax请求成功时返回的是jsonSring还是jsonObject的问题
- ajax学习之1-登录验证之-json
- Struts学习笔记(三):Ajax +json+JQuery的综合使用
- Ajax入门学习文档一
- ajax入门学习
- JSON学习入门
- Ajax入门学习
- Ajax、JSON——学习笔记
- 学习JSON的基本概念入门
- 【Java EE 学习 31】【JavaScript基础增强】【Ajax基础】【Json基础】
- 前端学习——使用Ajax方式POST JSON数据包