JavaScript异步编程——03-Ajax传输json和XML

Ajax 传输 JSON

JSON 的语法

JSON(JavaScript Object Notation):是 ECMAScript 的子集。作用是进行数据的交换。语法更为简洁,网络传输、机器解析都更为迅速。

语法规则:

  • 数据在键值对中

  • 数据由逗号分隔

  • 花括号保存对象

  • 方括号保存数组

数据类型:

  • 数字(整数或浮点数)

  • 字符串(在双引号中)

  • 逻辑值(true 或 false)

  • 数组(在方括号中)

  • 对象(在花括号中)

  • null

示例:

 // 对象{"name":"fox","age":"18","sex":"true","car":null}​// 数组[{"name":"小小胡","age":"1"},{"name":"小二胡","age":"2"}]

JavaScript 中:json 字符串 <--> js 对象

基本上,所有的语言都有将 json 字符串转化为该语言对象的语法。

比如在 js 中:

  • JSON.parse():将 JSON 字符串转化为 js 对象。例如:

 // 将 JSON 字符串格式化为 js 对象var jsObj = JSON.parse(ajax.responseText);
  • JSON.stringify():将 JS 对象转化为 JSON 字符串。例如:

 var Obj = {name: 'fox',age: 18,skill: '撩妹',};​console.log(Obj);​// 将 js 对象格式化为 JSON 字符串var jsonStr = JSON.stringify(Obj);

PHP 中:json 字符串 <--> js 对象

  • json_decode()方法:将json字符串转化为变量。

  • json_encode()方法:将变量转化为json字符串。

代码举例:

 <?phpheader("Content-Type:text/html;charset=utf-8");// json字符串$jsonStr = '{"name":"itcast","age":54,"skill":"歌神"}';// 字符串转化为 php对象print_r(json_decode($jsonStr));​echo "<br>";// php数组$arrayName = array('name' =>'littleFox' ,'age' => 13 );// php对象 转化为 json字符串print_r(json_encode($arrayName));?>

输出结果:

     stdClass Object ( [name] => itcast [age] => 54 [skill] => 歌神 ){"name":"littleFox","age":13}​

ajax 请求解析 json(举例)

(1)Person.json:

 {"name": "小强","skill": "砍树","friend": "老板"}

(2)myJson.php:

 <?php​// 读取json文件 并返回即可echo  file_get_contents('info/Person.json');​?>

(3)getJson.html:

 
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><title>Document</title></head><body><h1>获取 json 数据</h1><input type="button" value="获取json" id="btnJson" /></body></html><script type="text/javascript">// 获取的是一个 如果要获取多个// document.querySelectorAll(selector)document.querySelector('#btnJson').onclick = function () {var ajax = new XMLHttpRequest();​ajax.open('get', 'myJson.php');​ajax.send();​ajax.onreadystatechange = function () {if (ajax.readyState == 4 && ajax.status == 200) {// json 字符串 是字符串 所以我们可以 通过  responseText获取console.log(ajax.responseText);​// 转化为 js对象var jsObj = JSON.parse(ajax.responseText);​console.log(jsObj);​// 拼接ul svar str = '';​str += '<ul>';str += '<li>' + jsObj.name + '</li>';str += '<li>' + jsObj.skill + '</li>';str += '<li>' + jsObj.friend + '</li>';str += '</ul>';​// 设置到界面上​document.body.innerHTML = str;}};};</script>

演示效果:

Ajax 传输 XML

XML 语法

XML(Extensible Markup Language):可扩展标记语言。详细语法可以查看:#。

1、XML 声明:

 <?xml version="1.0" encoding="UTF-8"?>

第一行的声明,指定了 XML 版本(1.0)以及使用的编码。

2、自定义标签:

XML 中没有默认的标签,所有的标签都是我们自己已定义的。例如:

 <fox></fox><name></name>

XML 中没有单标签,都是双标签。

3、根节点:

XML 中必须要有一个根节点,所有的子节点都放置在根节点下。例如:

 <root1><name></name></root1>

XML 解析

因为 XML 就是标签,所以我们可以直接用解析 Dom 元素的方法解析 XML。

解析过程:

(1)html 部分:(包含 xml )

 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><title>Document</title></head><body><person id="personXML"><name>fox</name><age>18</age><skill>小花花</skill></person></body></html>

(2)解析 xml:

 <script type="text/javascript">var xmlObj = document.getElementById('personXML');var name = xmlObj.getElementsByTagName('name')[0].innerHTML;​console.log(name);</script>

ajax 请求解析 xml(举例)

(1)get_xml.php:(里面包含了 xml 文件)

 <?php// 设置 返回的为 xmlheader('content-type:text/xml; charset= utf-8');​// 读取xml文件 并返回echo file_get_contents('info/star.xml');​?>

上方代码解释:

  • php 自带了 读取 xml 文件的方法。

  • 在 php 中,如果要使用 xml 传输数据,则需要使用 header()设置返回的内容为 xml。

(2)get_xml.html:(Ajax 请求,获取并解析 xml)

 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><title>Document</title></head><body><input type="button" value="获取XMl数据" id="getXML" /></body></html><script type="text/javascript">document.querySelector('#getXML').onclick = function () {var ajax = new XMLHttpRequest();​ajax.open('get', 'get_XMl.php');​ajax.send();​ajax.onreadystatechange = function () {if (ajax.readyState == 4 && ajax.status == 200) {// 如果 返回的是 xml文件console.log(ajax.responseText);​// 异步 对象中 有另外一个属性 用来专门获取 xml// xml对象 在浏览器段 就是一个 document对象// 解析时 可以直接使用 querySelector 或者 getElementById等等 document对象 有的语法console.log(ajax.responseXML);console.log(ajax.responseXML.querySelector('kuzi').innerHTML);// 下面这个 页面文档对象 如果要获取某个标签console.log(window.document);}};};</script>

希望各位可以点个赞点个关注,这对up真的很重要,谢谢大家啦!

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

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

相关文章

Python-100-Days: Day11 Files and Exception

1.读取csv文件 读取文本文件时&#xff0c;需要在使用open函数时指定好带路径的文件名&#xff08;可以使用相对路径或绝对路径&#xff09;并将文件模式设置为r&#xff08;如果不指定&#xff0c;默认值也是r&#xff09;&#xff0c;然后通过encoding参数指定编码&#xf…

LTE的EARFCN和band之间的对应关系

一、通过EARFCN查询对应band 工作中经常遇到只知道EARFCN而需要计算band的情况&#xff0c;因此查了相关协议&#xff0c;找到了他们之间的对应关系&#xff0c;可以直接查表&#xff0c;非常方便。 具体见&#xff1a; 3GPP TS 36.101 5.7.3 Carrier frequency and EAR…

【ROMA核心特性数据、服务、消息、设备集成及统一运维】

1、数据集成 FDI旨在解决多种数据源的快速灵活集成能力&#xff0c;您可以在任意时间、任意地点、任意系统之间实现实时数据订阅和定时增量数据迁移。 &#xff08;1&#xff09;数据集成任务的生命周期管理 &#xff08;2&#xff09;FDI支持修改数据集成任务的信息、查看数…

通过氧气退火增强β-Ga₂O₃二极管.中国科技大学和河北半导体研究所的研究人员在这一特定领域取得了最新重大进展

上图所示&#xff1a;&#xff08;a&#xff09;增加台面有助于提高β-Ga2O3肖特基势垒二极管的阻断电压&#xff08;b&#xff09;。 氧气退火和自对准台面终端使β-Ga2O3二极管进一步走向商业化。 虽然β-Ga2O3电力电子技术已经取得了长足的进步&#xff0c;但仍然存在挑战&…

wordpress忘记后台密码,在数据库中修改回来,然后再修改回去。

源地址&#xff1a;https://www.ctvol.com/seoomethods/1421332.html 我们在做wordpess运维的时候&#xff0c;都会遇到很尴尬的时候&#xff0c;有时候在错误运维中&#xff0c;不知道删除了什么东西&#xff0c;造成wordpress后台不能登录&#xff0c;后台页面也直接失效&am…

太原理工大学Python数据分析原理与应用(课外考题:8~11章)

这部分大概只考10分&#xff0c;且大部分出在选择题&#xff0c;填空最多一两个 (仅供参考) 第十章 (理解概念为主&#xff0c;无需看推导过程) 第十一章

Linux实操之常用指令详解

文章目录 vi 和 vimvi 和 vim 基本使用 开机、重启和用户登录注销关机&重启命令用户登录和注销 用户管理基本介绍基本语法细节说明修改密码删除用户查询用户信息指令切换用户查看当前用户/登录用户用户组 实用指令指定运行级别帮助指令文件目录类时间和日期类搜索查找类压缩…

ENVI下实现遥感矿物蚀变信息提取

蚀变岩石是在热液作用影响下&#xff0c;使矿物成分、化学成分、结构、构造等发生变化的岩石。由于它们经常见于热液矿床的周围&#xff0c;因此被称为蚀变围岩&#xff0c;蚀变围岩是一种重要的找矿标志。利用围岩蚀变现象作为找矿标志已有数百年历史&#xff0c;发现的大型金…

CNN-GRU-Attention(12种算法优化CNN-GRU-Attention多特征输入超前24步预测)

12种算法优化CNN-GRU-Attention模型预测的代码 采用前一天&#xff08;24个小时&#xff09;的特征值去预测未来24小时的输出 CNN-GRU-Attention&#xff08;12种算法优化CNN-GRU-Attention&#xff09;(多特征输入超前24步预测)代码获取戳此处代码获取戳此处代码获取戳此处 主…

3D渲染是什么?渲染100邀请码1a12

3D渲染是把3D模型转换为2D图像或动画的过程&#xff0c;涉及到多方面知识&#xff0c;这篇文章我们就来了解下。 1、3D渲染的原理 3D渲染的原理是模拟光线在三维空间中的传播和反射&#xff0c;根据物体在空间中的分布&#xff0c;计算出每个像素的颜色和亮度等数值&#xff…

上证50etf期权到底该怎么玩?

今天期权懂带你了解上证50etf期权到底该怎么玩&#xff1f;ETF期权是一种股票市场上的金融衍生品&#xff0c;它是在交易所上市交易的期权合约&#xff0c;其标的资产是某个特定的交易所交易基金&#xff08;ETF&#xff09;&#xff0c;如上证50指数ETF或沪深300指数ETF等。 上…

我的256天之创作纪念日

目录 时光 数据的一些变化 开心的事 憧憬 时光 自上次CSDN的消息推送&#xff0c;又一个128天过去了&#xff0c;整天的工作和生活都在忙忙碌碌中度过&#xff0c;每到能静下来片刻&#xff0c;都倍感珍惜。因为一些原因&#xff0c;能够陪伴家人的时间越来越少&#xff…

ADS基础教程10-多态性(动态模型选择)

目录 一、多态性定义二、操作步骤&#xff11;.模型建立&#xff12;.模型选择&#xff13;.执行仿真 一、多态性定义 ADS中支持一个Symbol中&#xff0c;可以同时存在多个子图。在仿真时可以动态选择不同的子图继续宁仿真。 二、操作步骤 &#xff11;.模型建立 在上一章A…

第五章 Linux部署YUM仓库及NFS共享服务

一、YUM仓库服务 1、YUM概述 基于RPM包构建的软件更新机制可以自动解决依赖关系所有软件包由集中的YUM软件仓库提供 2、准备安装源 &#xff08;1&#xff09;yum软件仓库的常用类型 本地源仓库&#xff1a;baseurl&#xff1a;file&#xff1a;//在线源仓库&#xff1a;ba…

参数服务器

参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器&#xff0c;可以将数据存储在该容器中&#xff0c;被不同的节点调用&#xff0c;当然不同的节点也可以往其中存储数据。 参数服务器&#xff0c;一般适用于存在数据共享…

鸟哥的Linux私房菜 总结索引 | 第四章:首次登陆与线上求助

1、首次登陆系统 一般来说&#xff0c;不建议 直接使用 root 的身份登陆系统&#xff0c;应该使用一般帐号登陆&#xff0c;等到有需要修改或者是创建系统相关的管理工作时&#xff0c; 才切换身份成为 root 因为系统管理员的权限太高了&#xff0c;而 Linux 下面很多的指令行…

[笔记] Win11 Microsoft Store App 离线下载

微软应用商店无法下载或下载缓慢解决方法 在一些环境下 Microsoft Store 下载速度缓慢&#xff0c;或者需要账号登录才能安装的场景&#xff0c;可以通过找到对应的离线安装包的形式进行安装。 Micorsoft Store 中的离线安装包一般后缀为 AppxBundle 和 Appx。以 Ubuntu 为例…

《十八》QThread多线程组件

本章将重点介绍如何运用QThread组件实现多线程功能。 多线程技术在程序开发中尤为常用&#xff0c;Qt框架中提供了QThread库来实现多线程功能。当你需要使用QThread时&#xff0c;需包含QThread模块&#xff0c;以下是QThread类的一些主要成员函数和槽函数。 成员函数/槽函数 …

5月7号(信息差)

&#x1f30d;首次&#xff0c;西湖大学用蛋白质语言模型定向改造碱基编辑器&#xff0c;登Cell子刊 https://www.jiqizhixin.com/articles/2024-05-07-10 &#x1f384; 哈马斯宣布同意停火提议 https://finance.eastmoney.com/a/202405073067687785.html ✨ 中国将对…

Python读取ASC文件并转换成Excel文件(坐标)

import pandas as pd# 读取asc文件&#xff0c;指定空格为分隔符 df pd.read_csv(out_view2.asc, sep , headerNone)# 去掉空列 df df.dropna(howall, axis1)# 将数据保存到Excel文件 df.to_excel(out_view2.xlsx, indexFalse, headerFalse)效果图