百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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)...

取消回复欢迎 发表评论: