JSON、AJAX、i18n
JSON、AJAX、i18n
1、什么是JSON?
1.1、JSON在JavaScript中的使用
1.1.1、JSON的定义
json是由键值对组成,并且由花括号(大括号)包围,每个键由引号引起来,键和值之间使用冒号进行分割,多组键值对之间进行逗号分隔。
// json的定义 var jsonobj = { "key1" : 12, "key2" : "abc", "key3" : true, "key4" : [11,"arr",false], "key5" : { "key5_1" : 551, "key5_2" : "key5_2value" }, "key6" : [{ "key6_1_1": 6611, "key6_1_2": 6612 },{ "key6_2_1": 6621, "key6_2_2": 6622 }] };
1.1.2、json的访问
json本身是一个对象,json中的key我们可以理解为是对象中的一个属性。json中的key访问就跟访问对象的属性一样,json对象.key
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="Expires" content="0" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript"> // json的定义 var jsonobj = { "key1" : 12, "key2" : "abc", "key3" : true, "key4" : [11,"arr",false], "key5" : { "key5_1" : 551, "key5_2" : "key5_2value" }, "key6" : [{ "key6_1_1": 6611, "key6_1_2": 6612 },{ "key6_2_1": 6621, "key6_2_2": 6622 }] }; //alert(typeof (jsonobj));//json就是一个对象 // json的访问 // alert(jsonobj.key1); // alert(jsonobj.key2); // alert(jsonobj.key3); // alert(jsonobj.key4); //数组 /*for (var i = 0; i<jsonobj.key4.length;i++){ alert(jsonobj.key4[i]); }*/ //对象中的key //alert(jsonobj.key5.key5_1); //数组中的对象的值 //alert(jsonobj.key6); //取出来每一个都是json对象 var jsonItem = jsonobj.key6[0]; alert(jsonItem.key6_1_1); alert(jsonItem.key6_1_2); var jsonItem2 = jsonobj.key6[1]; alert(jsonItem2.key6_2_1); alert(jsonItem2.key6_2_2); // json对象转字符串 // json字符串转json对象 </script> </head> <body> </body> </html>
1.1.3、json的两个常用方法
json的存在有两种形式
一种是,对象的形式存在,我们叫他json对象
一种是,字符串的形式存在,我们叫他json字符串
一般我们要操作json中的数据的时候,需要json对象的格式 一般我们要在客户端和服务器端之间进行数据交换的时候,使用json字符串
JSON.stringify():把json对象转换成为json字符串
JSON.parse():把json字符串转换成为json对象
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="Expires" content="0" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript"> // json的定义 var jsonobj = { "key1" : 12, "key2" : "abc", "key3" : true, "key4" : [11,"arr",false], "key5" : { "key5_1" : 551, "key5_2" : "key5_2value" }, "key6" : [{ "key6_1_1": 6611, "key6_1_2": 6612 },{ "key6_2_1": 6621, "key6_2_2": 6622 }] }; //alert(typeof (jsonobj));//json就是一个对象 // json的访问 // alert(jsonobj.key1); // alert(jsonobj.key2); // alert(jsonobj.key3); // alert(jsonobj.key4); //数组 /*for (var i = 0; i<jsonobj.key4.length;i++){ alert(jsonobj.key4[i]); }*/ //对象中的key //alert(jsonobj.key5.key5_1); //数组中的对象的值 //alert(jsonobj.key6); //取出来每一个都是json对象 // var jsonItem = jsonobj.key6[0]; // alert(jsonItem.key6_1_1); // alert(jsonItem.key6_1_2); // var jsonItem2 = jsonobj.key6[1]; // alert(jsonItem2.key6_2_1); // alert(jsonItem2.key6_2_2); // json对象转字符串 // alert(jsonobj); var jsonObjString = JSON.stringify(jsonobj);//特别像java中对象的toString //alert(jsonObjString); // json字符串转json对象 var jsonStringObj = JSON.parse(jsonObjString); alert(jsonStringObj); </script> </head> <body> </body> </html>
1.2、JSON在java中的使用
一、javaBean和json的互转
二、List和json的互转
三、map和json的互转
package com.lxg.json; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.lxg.pojo.Person; import org.junit.Test; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class JsonTest { // 一、javaBean和json的互转 @Test public void test1(){ Person person = new Person(1,"小林"); //创建Gson对象实例 Gson gson = new Gson(); //toJson方法可以把java对象转换成为json字符串 String personJsonString = gson.toJson(person); System.out.println(personJsonString); //fromJson把json字符串转换回java对象 //第一个参数是json字符串,第二个参数是转换为的java实例类型 Person person1 = gson.fromJson(personJsonString, Person.class); System.out.println(person1); } // 二、List和json的互转 @Test public void test2(){ List<Person> personList = new ArrayList<>(); personList.add(new Person(1,"林")); personList.add(new Person(2,"阿拉")); Gson gson = new Gson(); //把list转换为json字符串 String s = gson.toJson(personList); System.out.println(s); List<Person> list = gson.fromJson(s, new PersonListType().getType()); System.out.println(list); Person person = list.get(0); System.out.println(person); } // 三、map和json的互转 @Test public void test3(){ Map<Integer,Person> map = new HashMap<>(); map.put(1,new Person(1,"lin")); map.put(2,new Person(2,"lin22")); Gson gson = new Gson(); String s = gson.toJson(map); System.out.println(s); // Map<Integer,Person> map1 = gson.fromJson(s, new PersonMapType().getType()); Map<Integer,Person> map1 = gson.fromJson(s, new TypeToken<HashMap<Integer,Person>>(){}.getType()); System.out.println(map1); Person p = map1.get(1); System.out.println(p); } }
2、AJAX请求
2.1、什么是AJAX请求
AJAX即”Asynchronous JavaScript And XML“(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
ajax是一种浏览器通过js异步发起请求,局部更新页面的技术。
局部:地址栏不变,原有的组件也不变,只是添加了一些新的内容 异步:互不干扰,先执行
2.2、原生AJAX请求的示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="Expires" content="0" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript"> //在这里使用JavaScript语言发起Ajax请求,访问服务器AjaxServlet中JavaScriptAjax function ajaxRequest() { // 1、我们首先要创建XMLHttpRequest var xmlhttprequest = new XMLHttpRequest (); // 2、调用open方法设置请求参数 xmlhttprequest.open("GET","http://localhost:8080/16_json_ajax_i18n/ajaxServlet?action=javaScriptAjax",true); //4、在send方法前绑定onreadystatechange事件,处理请求完成后的操作。 xmlhttprequest.onreadystatechange = function () { if(xmlhttprequest.readyState==4 && xmlhttprequest.status == 200){ var jsonObj = JSON.parse(xmlhttprequest.responseText); //把响应的数据显示在页面上 document.getElementById("div01").innerHTML = "编号:"+ jsonObj.id + ",姓名:"+ jsonObj.name; //alert(xmlhttprequest.responseText); } } // 3、调用send方法发送请求 xmlhttprequest.send(); // } </script> </head> <body> <button onclick="ajaxRequest()">ajax request</button> <div id="div01"> </div> </body> </html>
2.3、jQuery中的AJAX请求
一、$.ajax 方法
url 表示请求的地址
type 表示请求的类型GET或POST请求
data 表示发送给服务器的数据
- 格式有两种:
- name=vallue&name=value
success 请求成功,响应的回调函数
dataType 响应的数据类型
- 常用的数据类型有:
- text表示纯文本
- xml表示xml数据
- json表示json对象
// ajax请求 $("#ajaxBtn").click(function(){ $.ajax({ url:"http://localhost:8080/16_json_ajax_i18n/ajaxServlet", //data:"action=jQueryAjax", data:{action : "jQueryAjax"}, type:"GET", success:function (data) { //alert("服务器返回的数据是:"+data); //var jsonObj = JSON.parse(data); $("#msg").html("编号:"+data.id+",姓名:"+data.name); }, dataType:"json" }); alert("ajax btn"); });
二、$.get 方法
url 表示请求的地址
type 返回的数据类型
data 表示发送给服务器的数据
callback 成功的回调函数
// ajax--get请求 $("#getBtn").click(function(){ $.get( "http://localhost:8080/16_json_ajax_i18n/ajaxServlet", "action=jQueryGet", function (data) { $("#msg").html("get编号:"+data.id+",姓名:"+data.name); }, "json" ); alert(" get btn "); }); // ajax--post请求 $("#postBtn").click(function(){ // post请求 $.post( "http://localhost:8080/16_json_ajax_i18n/ajaxServlet", "action=jQueryPost", function (data) { $("#msg").html("post编号:"+data.id+",姓名:"+data.name); }, "json" ); alert("post btn"); });
三、$.getJson
url
data
callback
// ajax--getJson请求 $("#getJSONBtn").click(function(){ // 调用 $.getJSON( "http://localhost:8080/16_json_ajax_i18n/ajaxServlet", "action=jQueryGetJSON", function (data) { $("#msg").html("JSON编号:"+data.id+",姓名:"+data.name); }); alert("getJSON btn"); });
表单序列化serialize()
这个方法可以把表单中所有表单项的内容都获取到,并以name=value&name=value的形式进行拼接
// ajax请求 $("#submit").click(function(){ // 把参数序列化 //alert($("#form01").serialize()); $.getJSON( "http://localhost:8080/16_json_ajax_i18n/ajaxServlet", "action=jQuerySerialize&"+$("#form01").serialize(), function (data) { $("#msg").html("Serialize编号:"+data.id+",姓名:"+data.name); }); alert("serialize()"); }); });
3、i18n国际化(了解内容)
3.1、什么是i18n国际化?
本文作者:_xiaolin
本文链接:https://www.cnblogs.com/SilverStar/p/17415184.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步