ajax与json

目录

  • 1、ajax
    • 1.1、什么是ajax
    • 1.2、ajax核心
      • AJAX 工作原理
      • 示例代码
      • 重要属性和方法
      • 兼容性
    • 1.3、jQuery ajax
      • 什么是jQuery ajax
      • jQuery AJAX 核心概念
      • 基本用法
        • 1. **使用 $.ajax() 方法**
        • 2. **使用简化方法**
          • **使用 $.get() 方法**
          • **使用 $.post() 方法**
      • 常用配置选项
      • 示例:发送表单数据
  • 2、json
    • 2.1、什么是json
    • 2.2、JSON 语法规则
      • 嵌套结构
      • 注释
      • 错误示例

1、ajax

1.1、什么是ajax

AJAX 全称为 Asynchronous JavaScript And Xml ,表示异步的Java脚本和 Xml 文件,是一种异步刷新技术。

1.2、ajax核心

  1. XMLHttpRequest 对象

    • XMLHttpRequest 是 AJAX 的核心技术,它是一个浏览器内置的对象,可以向服务器发送 HTTP 请求并接收响应,而不必重新加载整个网页。
  2. 异步请求

    • AJAX 的核心是异步通信,这意味着客户端可以向服务器发送请求,并在后台等待响应,同时不阻塞用户界面。
  3. 数据交换格式

    • 虽然 AJAX 中的 “X” 代表 XML,但实际应用中,数据可以是任何形式,包括 XML、JSON、文本等。JSON 因其轻量级和易用性,现在是最常见的数据格式。
  4. 回调函数

    • 在 AJAX 中,通常使用回调函数来处理服务器的响应。当异步请求完成时,回调函数会被调用,并处理返回的数据。

AJAX 工作原理

  1. 创建 XMLHttpRequest 对象

    • 使用 JavaScript 创建一个 XMLHttpRequest 实例。
  2. 配置请求

    • 设置请求方法(如 GET、POST)、URL 和是否异步。
  3. 发送请求

    • 调用 send() 方法发送请求到服务器。
  4. 处理响应

    • 通过监听 XMLHttpRequestonreadystatechange 事件,当请求状态改变时,检查状态码和响应数据,并进行相应的处理。

示例代码

以下是一个简单的 AJAX 示例,使用 GET 请求从服务器获取数据:

// 创建 XMLHttpRequest 对象
var xhr = new XMLHttpRequest();// 配置请求
xhr.open('GET', 'https://api.example.com/data', true);// 设置请求头
xhr.setRequestHeader('Content-Type', 'application/json');// 定义回调函数
xhr.onreadystatechange = function() {if (xhr.readyState === 4 && xhr.status === 200) {// 请求成功,处理响应数据var data = JSON.parse(xhr.responseText);console.log(data);} else if (xhr.readyState === 4) {// 请求失败console.error('Request failed with status', xhr.status);}
};// 发送请求
xhr.send();

重要属性和方法

  • readyState

    • 0: 请求未初始化
    • 1: 服务器连接已建立
    • 2: 请求已接收
    • 3: 请求处理中
    • 4: 请求已完成,响应就绪
  • status

    • 200: 请求成功
    • 404: Not Found
    • 500: Internal Server Error
  • responseText

    • 服务器返回的文本数据
  • responseXML

    • 服务器返回的 XML 数据

兼容性

  • 老式浏览器

    • 在一些旧的浏览器中,需要使用 ActiveXObject 来创建 XMLHttpRequest 对象。
  • 现代浏览器

    • 所有现代浏览器都支持 XMLHttpRequest 对象。

1.3、jQuery ajax

什么是jQuery ajax

jQuery 是一个非常流行的 JavaScript 库,它简化了 HTML 文档的操作、事件处理、动画和 Ajax 交互。使用 jQuery 可以更方便地进行 AJAX 请求。jQuery 提供了一个强大的 $.ajax() 方法,可以轻松地发送 AJAX 请求,并处理响应。

jQuery AJAX 核心概念

  1. $.ajax() 方法

    • $.ajax() 是 jQuery 中用于发送 AJAX 请求的主要方法。它提供了丰富的配置选项,可以灵活地控制请求的各个方面。
  2. 简化的 AJAX 方法

    • jQuery 还提供了几个简化的 AJAX 方法,如 $.get(), $.post(), $.getJSON() 等,这些方法在常见的使用场景下更加方便。

基本用法

1. 使用 $.ajax() 方法

以下是一个使用 $.ajax() 方法的基本示例:

$.ajax({url: 'https://api.example.com/data',  // 请求的 URLtype: 'GET',  // 请求方法(GET、POST 等)dataType: 'json',  // 预期服务器返回的数据类型(json、xml、html 等),默认是application/textsuccess: function(response) {// 请求成功时的回调函数console.log('Success:', response);},error: function(xhr, status, error) {// 请求失败时的回调函数console.error('Error:', status, error);},complete: function(xhr, status) {// 请求完成时的回调函数(无论成功或失败)console.log('Complete:', status);}
});
2. 使用简化方法
使用 $.get() 方法
$.get('https://api.example.com/data', function(response) {// 请求成功时的回调函数console.log('Success:', response);
}).fail(function(xhr, status, error) {// 请求失败时的回调函数console.error('Error:', status, error);
}).always(function() {// 请求完成时的回调函数(无论成功或失败)console.log('Complete');
});
使用 $.post() 方法
$.post('https://api.example.com/data', { key: 'value' }, function(response) {// 请求成功时的回调函数console.log('Success:', response);
}).fail(function(xhr, status, error) {// 请求失败时的回调函数console.error('Error:', status, error);
}).always(function() {// 请求完成时的回调函数(无论成功或失败)console.log('Complete');
});

常用配置选项

  • url:请求的 URL。
  • type:请求方法(GET、POST 等)。
  • data:发送到服务器的数据,可以是字符串、对象或数组。
  • dataType:预期服务器返回的数据类型(json、xml、html 等)。
  • contentType:发送到服务器的数据类型(默认为 application/x-www-form-urlencoded; charset=UTF-8)。
  • success:请求成功时的回调函数。
  • error:请求失败时的回调函数。
  • complete:请求完成时的回调函数(无论成功或失败)。
  • timeout:请求超时时间(毫秒)。

示例:发送表单数据

假设你有一个表单,你希望在用户提交表单时使用 AJAX 发送数据到服务器:

<form id="myForm"><input type="text" name="name" placeholder="Name"><input type="text" name="email" placeholder="Email"><button type="submit">Submit</button>
</form><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {$('#myForm').submit(function(event) {event.preventDefault();  // 阻止表单默认提交var formData = $(this).serialize();  // 序列化表单数据$.ajax({url: 'https://api.example.com/submit',type: 'POST',data: formData,success: function(response) {console.log('Success:', response);alert('Form submitted successfully!');},error: function(xhr, status, error) {console.error('Error:', status, error);alert('An error occurred while submitting the form.');}});});
});
</script>

2、json

2.1、什么是json

JSON 全称为 JavaScript Object Notation,表示 Javascript 对象符号,是一种网络数据交换的格式,通常在服务器端和客户端之间使用。

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON 基于 JavaScript 的一个子集,但它是一种独立于语言的文本格式。

2.2、JSON 语法规则

  1. 数据格式

    • JSON 数据由键值对组成,键和值之间用冒号 : 分隔,键值对之间用逗号 , 分隔。
    • 键必须用双引号 " 包围,值可以是字符串、数字、对象、数组、布尔值或 null
  2. 对象

    • JSON 对象是一个无序的键值对集合,用花括号 {} 包围。

    示例:

    {"name": "Alice","age": 30,"isStudent": false
    }
    
  3. 数组

    • JSON 数组是一个有序的值列表,用方括号 [] 包围。

    示例:

    ["apple",123,true,{ "key": "value" },[1, 2, 3]
    ]
    
  4. 字符串

    • JSON 字符串必须用双引号 " 包围。

    示例:

    "Hello, World!"
    
  5. 数字

    • JSON 数字可以是整数或浮点数,支持正数、负数和零。

    示例:

    42
    -3.14
    0
    
  6. 布尔值

    • JSON 支持 truefalse 两个布尔值。

    示例:

    true
    false
    
  7. null

    • JSON 中的空值用 null 表示。

    示例:

    null
    

嵌套结构

JSON 支持嵌套结构,即对象中可以包含对象或数组,数组中也可以包含对象或数组。

示例:

{"name": "Bob","age": 25,"address": {"street": "123 Main St","city": "Anytown","zip": "12345"},"hobbies": ["reading", "swimming", "coding"],"isEmployed": true,"spouse": null
}

注释

JSON 本身不支持注释,但在某些实现中,注释可以被忽略。如果需要在 JSON 中添加注释,通常建议在数据之外的上下文中进行。

错误示例

  • 键未加引号

    {name: "Alice"  // 错误:键必须用双引号包围
    }
    
  • 字符串未加引号

    {"name": Alice  // 错误:字符串必须用双引号包围
    }
    
  • 多余的逗号

    {"name": "Alice",  // 错误:最后一个键值对后不能有逗号"age": 30,
    }
    

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

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

相关文章

CSS——26. 伪元素2(“::before ,::after”)

::before伪类 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>伪元素</title><style type"text/css">div::before{content: "我最棒";}}</style></head><body><!--…

Openssl1.1.1s rpm包构建与升级

rpmbuild入门知识 openssh/ssl二进制升级 文章目录 前言一、资源准备1.下载openssh、openssl二进制包2.安装rpmbuild工具3.拷贝源码包到SOURCES目录下4.系统开启telnet&#xff0c;防止意外导致shh无法连接5.编译工具安装6.补充说明 二、制作 OpenSSL RPM 包1.编写 SPEC 文件2.…

patchwork++地面分割学习笔记

参考资料&#xff1a;古月居 - ROS机器人知识分享社区 https://zhuanlan.zhihu.com/p/644297447 patchwork算法一共包含四部分内容&#xff1a;提出了以下四个部分&#xff1a;RNR、RVPF、A-GLE 和 TGR。 1&#xff09;基于 3D LiDAR 反射模型的反射噪声消除 (RNR)&#xff…

基于Spring Boot的海滨体育馆管理系统的设计与实现

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的海滨体育馆管理系统的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 宠物医院…

通过Android Studio修改第三方jar包并重新生成jar包

最近接手了来自公司其他同事的一个Unity项目,里面有一个封装的jar包要改动一下,无奈关于这个jar包的原工程文件丢失了,于是自己动手来修改下jar包,并做下记录。 一、导入第三方jar包 1、新建项目EditJarDemo(项目名随便取) 2、新建libs文件夹,把你要修改的third.jar 复制…

计算机网络之---物理层设备

什么是物理层设备 物理层设备是指负责数据在物理媒介上传输的硬件设备&#xff0c;它们主要处理数据的转换、信号的传输与接收&#xff0c;而不涉及数据的内容或意义。常见的物理层设备包括网卡、集线器、光纤收发器、调制解调器等。 物理层设备有哪些 1、网卡&#xff08;N…

flink的EventTime和Watermark

时间机制 Flink中的时间机制主要用在判断是否触发时间窗口window的计算。 在Flink中有三种时间概念&#xff1a;ProcessTime、IngestionTime、EventTime。 ProcessTime&#xff1a;是在数据抵达算子产生的时间&#xff08;Flink默认使用ProcessTime&#xff09; IngestionT…

Ubuntu 下测试 NVME SSD 的读写速度

在 Ubuntu 系统下&#xff0c;测试 NVME SSD 的读写速度&#xff0c;有好多种方法&#xff0c;常用的有如下几种&#xff1a; 1. Gnome-disks Gnome-disks&#xff08;也称为“Disks”&#xff09;是 GNOME 桌面环境中的磁盘管理工具&#xff0c;有图形界面&#xff0c;是测试…

SpringBoot之核心配置

学习目标&#xff1a; 1.熟悉Spring Boot全局配置文件的使用 2.掌握Spring Boot配置文件属性值注入 3.熟悉Spring Boot自定义配置 4.掌握Profile多环境配置 5.了解随机值设置以及参数间引用 1.全局配置文件 Spring Boot使用 application.properties 或者application.yaml 的文…

后端服务集成ElasticSearch搜索功能技术方案

文章目录 一、为什么选用ElasticSearch二、ElasticSearch基本概念1、文档和字段2、索引和映射3、倒排索引、文档和词条4、分词器 三、ElasticSearch工作原理1、Term Dictionary、Term index2、Stored Fields3、Docs Values4、Segment5、Lucene6、高性能、高扩展性、高可用①高性…

【JavaEE进阶】获取Cookie/Session

&#x1f340;Cookie简介 HTTP协议自身是属于 "⽆状态"协议. "⽆状态"的含义指的是: 默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信,和下次通信之间没有直接的联系.但是实际开发中,我们很多时候是需要知道请求之间的关联关系的. 例如登陆⽹站成…

《Spring Framework实战》3:概览

欢迎观看《Spring Framework实战》视频教程 Spring Framework 为基于现代 Java 的企业应用程序提供了全面的编程和配置模型 - 在任何类型的部署平台上。 Spring 的一个关键要素是应用程序级别的基础设施支持&#xff1a;Spring 专注于企业应用程序的 “管道”&#xff0c;以便…

借助免费GIS工具箱轻松实现las点云格式到3dtiles格式的转换

在当今数字化浪潮下&#xff0c;地理信息系统&#xff08;GIS&#xff09;技术日新月异&#xff0c;广泛渗透到城市规划、地质勘探、文化遗产保护等诸多领域。而 GISBox 作为一款功能强大且易用的 GIS 工具箱&#xff0c;以轻量级、免费使用、操作便捷等诸多优势&#xff0c;为…

高等数学学习笔记 ☞ 一元函数微分的基础知识

1. 微分的定义 &#xff08;1&#xff09;定义&#xff1a;设函数在点的某领域内有定义&#xff0c;取附近的点&#xff0c;对应的函数值分别为和&#xff0c; 令&#xff0c;若可以表示成&#xff0c;则称函数在点是可微的。 【 若函数在点是可微的&#xff0c;则可以表达为】…

linux之自动挂载

如果想要实现自动挂载&#xff0c;应该挂在客户端&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 客户端&#xff1a; [rootlocalhost ~]# yum install nfs-utils -y &#xff08;下载软件&#xff09; [rootlocalhost ~]# systemctl start nfs-utils.servic…

用户界面软件01

Jens Coldewey 著&#xff0c;Tom.X 译 本文中的模式语言逐步深入地探讨用户界面架构的设计&#xff0c;它基于人机工程学&#xff0c;足以形成一套完整的体系。如果你对这方面有兴趣&#xff0c;请参考[Tog92]&#xff0c;[Coo95]和[Col95]。 本文不讨论用户界面的布局&…

2025.1.8(c++对c语言的扩充——堆区空间,引用,函数)

笔记 上一笔记接续&#xff08;练习2的答案&#xff09; 练习&#xff1a;要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩&#xff0c;分别完成空间的申请、成绩的录入、升序排序、成绩输出函数以及空间释放函数&#xff0c;并在主程序中完成测试 要求使用new和d…

(长期更新)《零基础入门 ArcGIS(ArcScene) 》实验七----城市三维建模与分析(超超超详细!!!)

城市三维建模与分析 三维城市模型已经成为一种非常普遍的地理空间数据资源,成为城市的必需品,对城市能化管理至关重要。语义信息丰富的三维城市模型可以有效实现不同领域数据与IS相信息的高层次集成及互操作,从而在城市规划、环境模拟、应急响应和辅助决策等众多领域公挥作用、…

Harmony开发【笔记1】报错解决(字段名写错了。。)

在利用axios从网络接收请求时&#xff0c;发现返回obj的code为“-1”&#xff0c;非常不解&#xff0c;利用console.log测试&#xff0c;更加不解&#xff0c;可知抛出错误是 “ E 其他错误: userName required”。但是我在测试时&#xff0c;它并没有体现为空&#xff0c;…

(2023|NIPS,LLaVA-Med,生物医学 VLM,GPT-4 生成自指导指令跟随数据集,数据对齐,指令调优)

LLaVA-Med: Training a Large Language-and-Vision Assistant for Biomedicine in One Day 目录 LLaVA-Med: Training a Large Language-and-Vision Assistant for Biomedicine in One Day 0. 摘要 1. 简介 2. 相关工作 3. 生物医学视觉指令数据 4. 将多模态对话模型适配…