ajax 使用json传输数据
wxin55 2024-11-18 17:56 15 浏览 0 评论
1、为什么利用json传输数据?
xml数据生成过于复杂
xml数据解析过于复杂
2、关于json介绍
对象是属性的无序集合
在js中, 可以使用{}模拟这个集合
语法:
var json={属性:属性值,属性:属性值}
注意:属性可加可不加引号(包括单引号和双引号)
3、用json个表示具体的信息
(1)表示一个人的信息
var person = {name:'zhangsan',age:30};
alert(person.name+person.age); //显示张三30
(2)表示多个人的信息
var data=[{
name:'zhangsan',
age:30
},{
name:'lisi',
age:18
},{
name:'wangwu',
age:25
}];
for(var i=0;i<data.length;i++){
document.write(data[i].name+data[i].age);
document.write('<hr>');
}
4、在php中如何使用json
json_encode(); //json编码
json_decode(); //json解码
mixed json_decode ( string $json [, bool $assoc = false] )
json 待解码的 json string 格式的字符串。
assoc 当该参数为 TRUE 时,将返回 array 而非 object 。
默认返回一个对象
$obj=json_decode($str);
加上参数true表示数组
$arr=json_decode($str,true);
生成json字符串
json表示大量数据, 在php中表示多个、大量的数据可以数组、对象来表示
也就是说, 在php, 如果想生成json字符串, 必须从数组、对象上生成。
复合数据类型:数组、对象
从数组中生成json字符串
$row=array('name'=>'lisi','age'=>30);
echo json_encode($row);
从对象中生成json字符串
class Person{
public $name='zhangsan';
public $age=20;
}
$p1=new Person();
$str=json_encode($p1);
关于json保存中文的问题
目前, json只支持utf-8, 如果想保存中文, 必须进行转码
$arr=array('name'=>'张三','age'=>30);
$arr['name']=iconv('gb2312','utf-8',$arr['name']);
echo json_encode($arr);
5、在javascript中json语法:
var str=xmlHttp.responseText;
var json=eval("("+ str +")"); 返回是json对象
var json=eval(str); 返回是json数组对象
理解:eval()函数可以将php中的json字符串转换为javascript可执行的json对象(包括数组对象)
6、案例:
php代码:
$row:一维数组 生成一个json格式的字符串
$data:二维数组 生成一个json数组格式的字符串
<?php
$row=array('username'=>'lisi','password'=>'222222');
echo json_encode($row); 输出:{"username":"lisi","password":"222222"}
/*
$data=array(
array('name'=>'zhangsan','age'=>18),
array('name'=>'lisi','age'=>30)
);
echo json_encode($data);//输出:[{"name":"zhangsan","age":18},{"name":"lisi","age":30}]
*/
?>
HTML代码:
<script language="javascript" src="public.js"></script>
<script>
var xhr=createxhr();
xhr.open('post','demo05.php');
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.onreadystatechange=function(){
if(xhr.readyState==4 && xhr.status==200){
var value=xhr.responseText; //返回的是字符串
//(1)
var json=eval('('+value+')'); //返回是json对象
alert(json.username+json.password);
//(2)
//var json=eval(value); //返回是json数组对象
//alert(json[0].name+json[0].age);
}
};
xhr.send(null);
</script>
理解:
var json=eval('('+value+')'); 主要是针对关联数组
返回:"{name:'zhangsan',age:18}"
访问方式:json.username+json.password
var json=eval(value); 主要是针对索引数组
返回:"[{name:'zhangsan',age:18},{name:'lisi',age:20}]"
访问方式:json[0].name+json[0].age
注意:索引数组的解析也可以采用 var json=eval(value);
查询数据表中所有数据并生成json字符串返回
php代码:
<?php
//查询goods表中所有数据并返回
$sql="select name,price from goods order by id desc";
mysql_connect('localhost','root','111111');
mysql_select_db('shop');
mysql_query('set names gb2312');
$result=mysql_query($sql); //发送sql语句
$num=mysql_num_rows($result); //总行数
$data=array();
for($i=0;$i<$num;$i++){
$row=mysql_fetch_assoc($result);
$row['name']=iconv('gb2312','utf-8',$row['name']);
$data[]=$row;
}
mysql_close();
echo json_encode($data);
PHP代码:
<style>
tr{
background-color:#ffffff;
height:30px;
font-size:12px;
}
</style>
<script language="javascript" src='public.js'></script>
<script>
window.onload=function(){
var xhr=createxhr();
xhr.open('post','demo04.php');
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.onreadystatechange=function(){
if(xhr.readyState==4 && xhr.status==200)
var value=xhr.responseText;
var data=eval(value);
for(var i=0;i<data.length;i++){
//创建行元素
var tr=document.createElement('tr');
//创建序号td元素
var tdID=document.createElement('td');
tdID.innerHTML=i+1;
//创建名称td元素
var tdName=document.createElement('td');
tdName.innerHTML=data[i].name;
//创建价格td元素
var tdPrice=document.createElement('td');
tdPrice.innerHTML=data[i].price;
//将三个td追加到tr元素
tr.appendChild(tdID);
tr.appendChild(tdName);
tr.appendChild(tdPrice);
document.getElementsByTagName('TBODY')[0].appendChild(tr);
}
};
xhr.send(null);
}
</script>
<table id='tbData' width="800" cellspacing="1" cellpadding="4" bgcolor="#336699">
<tr>
<td>序号</td>
<td>商品名称</td>
<td>商品价格</td>
</tr>
</table>
相关推荐
- Shiro学习系列教程三:集成web(web集成环境)
-
相关推荐:《Shiro学习系列教程一:Shiro之helloworld》《Shiro学习系列教程三:集成web》《Shiro学习系列教程四:集成web(二)》《Shiro学习系列教程五:自定义Real...
- 写了这么多年代码,这样的登录方式还是头一回见
-
SpringSecurity系列还没搞完,最近还在研究。有的时候我不禁想,如果从SpringSecurity诞生的第一天开始,我们就一直在追踪它,那么今天再去看它的源码一定很简单,因为我们了...
- Shiro框架:认证和授权原理(shiro框架授权的四种方式)
-
优质文章,及时送达前言Shiro作为解决权限问题的常用框架,常用于解决认证、授权、加密、会话管理等场景。本文将对Shiro的认证和授权原理进行介绍:Shiro可以做什么?、Shiro是由什么组成的?举...
- Spring Boot 整合 Shiro-登录认证和权限管理
-
这篇文章我们来学习如何使用SpringBoot集成ApacheShiro。安全应该是互联网公司的一道生命线,几乎任何的公司都会涉及到这方面的需求。在Java领域一般有SpringS...
- Apache Shiro权限管理解析二Apache Shiro核心组件
-
ApacheShiro核心组件Subject(用户主体)Subject是Shiro中的核心概念之一,表示当前用户(可以是登录的用户或匿名用户)。它是与用户交互的主要接口,提供了对用户身份验证...
- 详细介绍一下Apache Shiro的实现原理?
-
ApacheShiro是一个强大、灵活的Java安全框架,设计目标是简化复杂的安全需求,提供灵活的API,使开发者能方便地将安全功能集成到任何应用中。主要作用是用于管理身份验证、授权、会话管理和加...
- 什么是Apache Shiro?SpringBoot中如何整合Apache Shiro?
-
ApacheShiro是一个功能强大且易于使用的Java安全框架,主要用于构建安全的企业应用程序,例如在应用中处理身份验证(Authentication)、授权(Authorization)、加密(...
- Apache Shiro权限管理解析三Apache Shiro应用
-
Shiro的优势与适用场景优势简单易用:API设计直观,适合中小型项目快速实现权限管理。灵活性高:支持多种数据源(数据库、LDAP等),并允许开发者自定义Realm。跨平台支持:不仅限于We...
- 那些通用清除软件不曾注意的秘密(清理不需要的应用)
-
系统清理就像卫生检查前的大扫除,即使你使出吃奶的劲儿把一切可能的地方都打扫过,还会留下边边角角的遗漏。随着大家电脑安全意识的提高,越来越多的朋友开始关注自己的电脑安全,也知道安装360系列软件来"武装...
- JWT在跨域认证中的奇妙应用(jq解决跨域)
-
JWT在跨域认证中的奇妙应用什么是JWT?让我们先来聊聊JWT(JSONWebToken)。它是一种轻量级的认证机制,就像一张电子车票,能让用户在不同的站点间通行无阻。JWT由三部分组成:头部(H...
- 开启无痕浏览模式真能保护个人隐私吗?
-
在访问网站页面时,你是否有过这样的疑虑,自己访问的会不会是山寨网站?用公用电脑上网,个人信息会被别人看到吗?这时,有人会说,使用浏览器的“无痕浏览”模式不就行了,可以在操作中不留下“蛛丝马迹”,但,真...
- 辅助上网为啥会被抛弃 曲奇(Cookie)虽甜但有毒
-
近期有个小新闻,大概很多小伙伴都没有注意到,那就是谷歌Chrome浏览器要弃用Cookie了!说到Cookie功能,很多小伙伴大概觉得不怎么熟悉,有可能还不如前一段时间被弃用的Flash“出名”,但它...
- cookie、session和token(cookie,session和token的区别)
-
Cookie的概念最早是在1994年由NetscapeCommunications的程序员LouMontulli发明的,目的是为了解决当时早期互联网的一个关键问题:HTTP无状态协...
- 小白都能看懂的session与cookie的区别理解
-
cookie/session都是跟踪识别浏览器用户身份的一个东西。cookie的理解:我们要知道,服务器和客户端之间进行数据传输,需要使用到一个超文本传输协议(http协议),而http协议本身是个...
- 面试:网易一面:支撑10万QPS的电商购物车系统如何架构设计呢?
-
1.需求分析:10万QPS的购物车系统需要满足哪些需求?回答:10万QPS的购物车系统需要满足以下核心需求和挑战:核心功能:添加、删除、修改购物车商品实时查看购物车列表支持高并发读写(10万QPS)...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- Shiro学习系列教程三:集成web(web集成环境)
- 写了这么多年代码,这样的登录方式还是头一回见
- Shiro框架:认证和授权原理(shiro框架授权的四种方式)
- Spring Boot 整合 Shiro-登录认证和权限管理
- Apache Shiro权限管理解析二Apache Shiro核心组件
- 详细介绍一下Apache Shiro的实现原理?
- 什么是Apache Shiro?SpringBoot中如何整合Apache Shiro?
- Apache Shiro权限管理解析三Apache Shiro应用
- 那些通用清除软件不曾注意的秘密(清理不需要的应用)
- JWT在跨域认证中的奇妙应用(jq解决跨域)
- 标签列表
-
- hive行转列函数 (63)
- sourcemap文件是什么 (54)
- display none 隐藏后怎么显示 (56)
- 共享锁和排他锁的区别 (51)
- httpservletrequest 获取参数 (64)
- jstl包 (64)
- qsharedmemory (50)
- watch computed (53)
- java中switch (68)
- date.now (55)
- git-bash (56)
- 盒子垂直居中 (68)
- npm是什么命令 (62)
- python中+=代表什么 (70)
- fsimage (51)
- nginx break (61)
- mysql分区表的优缺点 (53)
- centos7切换到图形界面 (55)
- 前端深拷贝 (62)
- kmp模式匹配算法 (57)
- jsjson字符串转json对象 (53)
- jdbc connection (61)
- javascript字符串转换为数字 (54)
- mybatis 使用 (73)
- 安装mysql数据库 (55)