JSONAJAX

news2024/11/26 5:49:39

JSON&&AJAX

一、JSON

1.1 json简介

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,而且很多语言都提供了对 json 的支持(包括 C, C++, C#, Java, JavaScript, Perl, Python等)。 这样就使得 JSON 成为理想的数据交换格式。

json 是一种轻量级的数据交换格式。

轻量级指的是跟 xml 做比较。数据交换指的是客户端和服务器之间业务数据的传递格式。

1.2 JSON 在 JavaScript 中的使用

json 是由键值对组成,并且由花括号(大括号)包围。每个键由引号引起来,键和值之间使用冒号进行分隔,多组键值对之间进行逗号进行分隔。

var jsonObj = {
    "key1":12,
    "key2":"abc",
    "key3":true,
    "key4":[11,"arr",false],
    "key5":{
    "key5_1" : 551,
    "key5_2" : "key5_2_value"
    },
    "key6":[{
        "key6_1_1":6611,
        "key6_1_2":"key6_1_2_value"
    },{
        "key6_2_1":6621,
        "key6_2_2":"key6_2_2_value"
    }]
};

json 访问示例:

json 中的 key 访问就跟访问对象的属性一样: json 对象.key

alert(typeof(jsonObj));// object json 就是一个对象
alert(jsonObj.key1); //12
alert(jsonObj.key2); // abc
alert(jsonObj.key3); // true
alert(jsonObj.key4);// 得到数组[11,"arr",false]
// json 中 数组值的遍历
for(var i = 0; i < jsonObj.key4.length; i++) {
alert(jsonObj.key4[i]);
}
alert(jsonObj.key5.key5_1);//551
alert(jsonObj.key5.key5_2);//key5_2_value
alert( jsonObj.key6 );// 得到 json 数组
// 取出来每一个元素都是 json 对象
var jsonItem = jsonObj.key6[0];
// alert( jsonItem.key6_1_1 ); //6611
alert( jsonItem.key6_1_2 ); //key6_1_2_value

json 的两个常用方法

json 的存在有两种形式。

一种是:对象的形式存在,我们叫它 json 对象。

一种是:字符串的形式存在,我们叫它 json 字符串。

一般我们要操作 json 中的数据的时候,需要 json 对象的格式。

一般我们要在客户端和服务器之间进行数据交换的时候,使用 json 字符串。

JSON.stringify() 把 json 对象转换成为 json 字符串

JSON.parse() 把 json 字符串转换成为 json 对象

// 把 json 对象转换成为 json 字符串
var jsonObjString = JSON.stringify(jsonObj); // 特别像 Java 中对象的 toString
alert(jsonObjString)
// 把 json 字符串。转换成为 json 对象
var jsonObj2 = JSON.parse(jsonObjString);
alert(jsonObj2.key1);// 12
alert(jsonObj2.key2);// abc

1.3 JSON 在 java 中的使用

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 personListJsonString = gson.toJson(personList);
    System.out.println(personListJsonString);
    List<Person> list = gson.fromJson(personListJsonString, 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> personMap = new HashMap<>();
    personMap.put(1, new Person(1, "国哥好帅"));
    personMap.put(2, new Person(2, "康师傅也好帅"));
    Gson gson = new Gson();
    // 把 map 集合转换成为 json 字符串
    String personMapJsonString = gson.toJson(personMap);
    System.out.println(personMapJsonString);
    // Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString, new
    PersonMapType().getType());
    Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString, new
    TypeToken<HashMap<Integer,Person>>(){}.getType());
    System.out.println(personMap2);
    Person p = personMap2.get(1);
    System.out.println(p);
}

二、AJAX请求

2.1 AJAX简介

AJAX 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。

ajax 是一种浏览器通过 js 异步发起请求,局部更新页面的技术。

Ajax 请求的局部更新,浏览器地址栏不会发生变化

局部更新不会舍弃原来页面的内容

2.2 原生 AJAX 请求的示例

image-20221222180038287

2.3 jQuery 中的 AJAX 请求

image-20221222180834957

$("#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"
    });
});

. g e t 方法和 .get 方法和 .get方法和.post 方法

url :请求的 url 地址

data :发送的数据

callback :成功的回调函数

type :返回的数据类型

$("#getBtn").click(function(){
    $.get("http://localhost:8080/16_json_ajax_i18n/ajaxServlet","action=jQueryGet",function (data) {
    	$("#msg").html(" get 编号:" + data.id + " , 姓名:" + data.name);
    },"json");
});
// ajax--post 请求
$("#postBtn").click(function(){
    $.post("http://localhost:8080/16_json_ajax_i18n/ajaxServlet","action=jQueryPost",function (data)
    {
    	$("#msg").html(" post 编号:" + data.id + " , 姓名:" + data.name);
    },"json");
});

$.getJSON 方法

url 请求的 url 地址

data 发送给服务器的数据

callback 成功的回调函数

// ajax--getJson 请求
$("#getJSONBtn").click(function(){
    $.getJSON("http://localhost:8080/16_json_ajax_i18n/ajaxServlet","action=jQueryGetJSON",function
    (data) {
    	$("#msg").html(" getJSON 编号:" + data.id + " , 姓名:" + data.name);
    });
});

表单序列化 serialize()serialize()可以把表单中所有表单项的内容都获取到,并以 name=value&name=value 的形式进行拼接

$("#submit").click(function(){
// 把参数序列化
    $.getJSON("http://localhost:8080/16_json_ajax_i18n/ajaxServlet","action=jQuerySerialize&" +
   		 $("#form01").serialize(),function (data) {
   		 $("#msg").html(" Serialize 编号:" + data.id + " , 姓名:" + data.name);
    });
});

“http://localhost:8080/16_json_ajax_i18n/ajaxServlet”,“action=jQuerySerialize&” +
$(“#form01”).serialize(),function (data) {
$(“#msg”).html(" Serialize 编号:" + data.id + " , 姓名:" + data.name);
});
});





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2210578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常用的devops工具集成方法

常用的devops工具集成方法涵盖了软件开发和运维的各个方面&#xff0c;从版本控制到自动化构建、测试、部署和监控。这些工具的有效集成可以帮助团队提高协作效率&#xff0c;减少沟通障碍&#xff0c;实现快速、高质量的软件交付。以下是对这些工具集成方法的具体介绍&#xf…

双核DSP芯片的内存管理

总体框图 总的来说&#xff0c;在这款DSP芯片上&#xff0c;RAM分成了四种不同的类型&#xff1a; 专用RAM: CPU专用的内存&#xff0c;其他主机无法访问。 双核共享RAM: CLA和CPU共享内存&#xff0c;双方都可以对内存地址进行访问 MSGRAM&#xff1a; CLA和CPU之间传递数据的…

【自动驾驶汽车通讯协议】I2C(IIC)总线通讯技术详解

文章目录 0. 前言1. I2C简介2.I2C的工作原理2.1 硬件要求&#xff1a;2.2 半双工通信&#xff1a; 3. 通信时序4. 其他特性4.1 通信速率4.2 抗干扰措施4.3 注意事项 5. 在自动驾驶汽车中的应用5.1 I2C操作模式5.2 I2C的用途 6. 总结 0. 前言 按照国际惯例&#xff0c;首先声明&…

Spring Boot知识管理系统:创新与实践

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

【含开题报告+文档+PPT+源码】基于人脸识别的课堂考勤系统的设计与实现

开题报告 随着科技的不断发展&#xff0c;人脸识别技术已经逐渐渗透到各个领域&#xff0c;包括教育领域。传统的课堂考勤方式通常依赖于学生签到或教师手动记录&#xff0c;这种方式存在着许多不足之处&#xff0c;例如容易出现人为错误、耗费时间和资源等。为了解决这些问题…

机器学习:强化学习中的探索策略全解析

引言 在机器学习的广阔领域中&#xff0c;强化学习&#xff08;Reinforcement Learning, RL&#xff09;无疑是一个充满魅力的子领域。它通过智能体与环境的交互&#xff0c;学习如何在特定的任务中做出最优决策。然而&#xff0c;在这个过程中&#xff0c;探索&#xff08;ex…

linux 配置ssh免密登录

一、 cd /root/.ssh/ #不存在就创建mkdir /root/.ssh ssh-keygen #连续按4个回车 ll二、将公钥发送到目标服务器下 #公钥上传到目标服务器 ssh-copy-id root192.168.31.142 #回车完也是要输入密码的 #测试一下免密登录&#xff1a; ssh root192.168.31.142 成功

二、后台管理系统布局菜单可拖动

前两天产品提出了一个需求&#xff0c;说后台管理系统的左边菜单的名称字数过多&#xff0c;遮挡了。希望能让客户能够看到全部的名称&#xff0c;给左侧菜单增加一个可拖动的功能&#xff0c;经过我的研究&#xff0c;这个功能最终也做出来了&#xff0c;先看效果&#xff0c;…

IDEA之手动添加作者信息

IDEA不能像eclipse一样&#xff0c;直接使用/**注释快捷键在类上带出作者信息。 解决方案&#xff1a; 手动添加自定义作者注释快捷键 /*** Author: TroubleBoy* Date: $DATE$* Description: TODO*/ 6.编辑日期变量&#xff0c;设置变量DATE的Expression为date() 7.应用Java…

Nacos的相关资料

目录 Nacos的Mysql文件&#xff1a; custom.env文件&#xff1a; 执行的Docker命令&#xff1a; 从 GitHub 官方仓库下载 Nacos&#xff1a;https://github.com/alibaba/nacos Nacos的Mysql文件&#xff1a; -- --------------------------------------------------------…

【工具类】hutool http请求获取S3图片流

博主介绍&#xff1a;✌全网粉丝20W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

基于数字信号处理的语音数字识别器

基于数字信号处理的语音数字识别器 系统说明 该系统工作流程图如下 各部分关键参数及简要说明如下。 预处理阶段&#xff1a; 预录制语音为单个数字的语音&#xff0c;从 0 - 9 共 10 组&#xff0c;采样率 16 kHz计算 MFCC 特征中&#xff0c;Mel 滤波器组个数 40&#xff…

Journey Training:o1的一次复现尝试,极长思维链的合成

知乎&#xff1a;啦啦啦啦&#xff08;已授权&#xff09;链接&#xff1a;https://zhuanlan.zhihu.com/p/902522340 论文&#xff1a;O1 Replication Journey: A Strategic Progress Report链接&#xff1a;https://github.com/GAIR-NLP/O1-Journey 这篇论文记录了一次o1复现尝…

IBMS集成管理平台——推动建筑业数字化转型

随着城市发展和科技进步&#xff0c;智慧楼宇(IBMS)作为建筑智能化的核心系统&#xff0c;已经成为现代建筑中不可或缺的一部分。通过整合各种智能设备和系统&#xff0c;IBMS提供了对建筑内部运行状况的全面监控和管理&#xff0c;实现了能源节约、安全保障和舒适体验的多重目…

关于拖拽时需要注意的细节

cklick,mousedown,mouseup 当触发点击事件后三者的触发顺序 当元素放大用scalse时&#xff0c;检测鼠标的移动距离用不用/scale&#xff1f; <!doctype html> <html lang"en"><head><meta charset"UTF-8" /><link rel"ic…

【专题】智启未来:新质生产力引擎驱动下的智能制造行业革新报告合集PDF分享(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p37856 在当今全球经济格局深刻变革的大背景下&#xff0c;制造业作为国家经济的基石&#xff0c;正处在高质量发展的关键历史时期。智能决策作为一股崭新的力量&#xff0c;正逐步成为推动制造业数智化转型的强大新动能。众多制造企…

C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式

今天想通过和大家分享如何删除字符串最后一个字符的N种实现方法&#xff0c;来回顾一些基础知识点。 01第一类、字符串方式 这类方法是通过string类型自身方法直接实现。 1、Substring方法 相信大多数人第一个想到的可能就是这个方法。Substring方法是字符串内置方法&#…

基于苔藓生长优化算法(Moss Growth Optimization, MGO)的多无人机协同三维路径规划(提供MATLAB代码)

一、苔藓生长优化算法介绍 苔藓生长优化算法&#xff08;Moss Growth Optimization, MGO&#xff09;是一种受自然界苔藓生长机制启发的元启发式优化算法。这种算法模仿了苔藓在潮湿环境中的扩散和生长方式&#xff0c;以寻找复杂问题的最优解。以下是苔藓生长优化算法的一些基…

如何清空回收站后在 Windows 11/10 中恢复已删除的文件

这篇文章将解释如何将已删除的文件、文件夹和其他项目从回收站还原或恢复到原始位置。有时&#xff0c;我们最终会删除重要的文件和文件夹&#xff0c;然后我们不知道如何将它们恢复到原来的位置。但是您不必担心&#xff0c;因为这篇针对初学者的帖子将详细指导您完成所有步骤…

JDK下载与IDEA环境配置

JDK下载与IDEA环境配置 前言 ​ 国庆过后新生也是正式进入小组学习了&#xff0c;我们组有一个学Java的&#xff0c;在使用IDEA时遇到了一些问题&#xff0c;输出会乱码&#xff0c;那这一看肯定是字符集出了问题&#xff0c;但是我看IDEA配置的字符集没有什么问题&#xff0…