JavaScript 71 JavaScript JSON 71.10 JSON PHP

JavaScript

71 JavaScript JSON

71.10 JSON PHP

JSON 的常规用途是从 web 服务器读取数据,然后在网页中显示这些数据。

如何在客户端与 PHP 服务器之间交换 JSON 数据。

71.10.1 PHP 文件

PHP 提供处理 JSON 的内建函数。

通过使用 PHP 函数 json_encode(),PHP 中的对象可转换为 JSON:

【PHP 文件】

<?php
$myObj->name = "Bill Gates";
$myObj->age = 62;
$myObj->city = "Seattle";

$myJSON = json_encode($myObj);

echo $myJSON;
?>

在这里插入图片描述

71.10.2 客户端 JavaScript

这是客户端上的 JavaScript,使用 AJAX 调用来请求上例的 PHP 文件:

【实例】

使用 JSON.parse() 把结果转换为 JavaScript 对象:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()  {
    if (this.readyState == 4 && this.status == 200) {
         myObj = JSON.parse(this.responseText);
         document.getElementById("demo").innerHTML = myObj.name;
     }
};
xmlhttp.open("GET", "demo_file.php", true);
xmlhttp.send();

在这里插入图片描述

71.10.3 PHP 数组

在使用 PHP 函数 json_encode() 时,PHP 中的数组也将被转换为 JSON:

【PHP 文件】

<?php
$myArr = array("Bill Gates", "Steve Jobs", "Elon Musk");

$myJSON = json_encode($myArr);

echo $myJSON;
?>

在这里插入图片描述

71.10.4 客户端 JavaScript

这是客户端上的 JavaScript,使用 AJAX 调用来请求上例的 PHP 文件:

【实例】

使用 JSON.parse() 将结果转换为 JavaScript 数组:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()  {
    if (this.readyState == 4 && this.status == 200) {
         myObj = JSON.parse(this.responseText);
         document.getElementById("demo").innerHTML = myObj[2];
     }
};
xmlhttp.open("GET", "demo_file_array.php", true);
xmlhttp.send();

在这里插入图片描述

71.10.5 PHP 数据库

PHP 是服务器端编程语言,应该用于只能由服务器执行的操作,比如访问数据库。

想象一下服务器上有一个数据库,包含客户、产品和供应商数据。

此刻,需要请求服务器来获取“客户”表中前十条记录:

【实例】

使用 JSON.stringify() 将 JavaScript 对象转换为 JSON:

obj = { "table":"customers", "limit":10 };
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
     if (this.readyState == 4 && this.status == 200) {
        document.getElementById("demo").innerHTML  = this.responseText;
    }
};
xmlhttp.open("GET",  "demo_json_db.php?x=" + dbParam, true);
xmlhttp.send();

【例子解释】

  • 定义包含 table 属性和 limit 属性的对象。
  • 将这个对象转换为 JSON 字符串。
  • 向这个 PHP 文件发送请求,其中 JSON 作为参数。
  • 等待直到请求返回结果(作为 JSON)。
  • 显示从 PHP 文件接收到的结果。

【PHP 文件】

<?php
header("Content-Type: application/json; charset=UTF-8");
$obj =  json_decode($_GET["x"], false);
 
$conn = new mysqli("myServer", "myUser", "myPassword", "Northwind");
$result = $conn->query("SELECT name FROM ".$obj->$table." LIMIT ".$obj->$limit);
$outp = array();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($outp);
?>

【PHP 文件解释】

  • 将请求转换为对象,使用 PHP 函数 json_decode()
  • 访问数据库,用所请求的数据填充数组。
  • 把数组添加到对象,使用 json_encode() 函数以 JSON 返回该对象。

【遍历结果】

把从 PHP 文件接收到的结果转换为 JavaScript 对象,或者是在本例中的,一个 JavaScript数组

【实例】

使用 JSON.parse() 把 JSON 转换为 JavaScript 对象:

...
xmlhttp.onreadystatechange = function() {
     if (this.readyState == 4 && this.status == 200) {
         myObj = JSON.parse(this.responseText);
         for (x in myObj) {
             txt += myObj[x].name + "<br>";
        }
         document.getElementById("demo").innerHTML = txt;
    }
};
 ...
71.10.6 PHP 方法 = POST

在向服务器发送数据时,通常最好是使用 HTTP POST 方法。

如需使用 POST 方法来发送 AJAX 请求,请指定该方法和正确的头部。

发送到服务器的数据现在必须是 .send() 方法的参数

【实例】

obj = { "table":"customers", "limit":10 };
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
     if (this.readyState == 4 && this.status == 200) {
         myObj = JSON.parse(this.responseText);
         for (x in myObj) {
             txt += myObj[x].name + "<br>";
        }
         document.getElementById("demo").innerHTML = txt;
    }
};
xmlhttp.open("POST", "demo_json_db.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("x=" + dbParam);

在这里插入图片描述

PHP 文件中的唯一不同是获取被传输数据的方法。

【PHP 文件】

使用 $_POST 而不是 $_GET

<?php
header("Content-Type: application/json; charset=UTF-8");
$obj =  json_decode($_POST["x"], false);
  
$conn = new mysqli("myServer", "myUser", "myPassword", "Northwind");
$result = $conn->query("SELECT name FROM ".$obj->$table." LIMIT ".$obj->$limit);
$outp = array();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($outp);
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
注意: Node.js MongoDB AngularJSWeb开发((中文版))pdf 由于文件比较大,次分为三部分上传,下载好三部分之后,放在同一个文件夹下,进行解压即可,另外两部分地址为: part2:http://download.csdn.net/detail/u010870518/9539548 part3:http://download.csdn.net/detail/u010870518/9539542 第1部分 引 言 第1章 介绍Node.js-to-AngularJS套件 3 1.1 了解基本的Web开发框架 3 1.1.1 用户 4 1.1.2 浏览器 4 1.1.3 Web服务器 6 1.1.4 后端服务 6 1.2 了解Node.js-to-AngularJS套件组件 7 1.2.1 Node.js 7 1.2.2 MongoDB 8 1.2.3 Express 9 1.2.4 AngularJS 9 1.3 小结 10 1.4 下一章 10 第2章 JavaScript基础 11 2.1 定义变量 11 2.2 了解JavaScript数据类型 12 2.3 使用运算符 13 2.3.1 算术运算符 13 2.3.2 赋值运算符 14 2.3.3 运用比较和条件运算符 14 2.4 实现循环 16 2.4.1 while循环 17 2.4.2 do/while循环 17 2.4.3 for循环 17 2.4.4 for/in循环 18 2.4.5 中断循环 19 2.5 创建函数 19 2.5.1 定义函数 20 2.5.2 传递变量给函数 20 2.5.3 从函数返回值 20 2.5.4 使用匿名函数 21 2.6 理解变量作用域 22 2.7 使用JavaScript对象 22 2.7.1 使用对象语法 23 2.7.2 创建自定义对象 23 2.7.3 使用原型对象模式 24 2.8 处理字符串 25 2.8.1 合并字符串 26 2.8.2 在字符串中搜索子串 26 2.8.3 在一个字符串中替换单词 27 2.8.4 将字符串分割成数组 27 2.9 使用数组 27 2.9.1 合并数组 28 2.9.2 遍历数组 29 2.9.3 将数组转换为字符串 29 2.9.4 检查数组是否包含某个条目 29 2.9.5 在数组中添加条目和删除条目 30 2.10 添加错误处理 30 2.10.1 try/catch块 30 2.10.2 抛出你自己的错误 31 2.10.3 使用finally 31 2.11 小结 32 2.12 下一章 32 第2部分 学习Node.js 第3章 开始使用Node.js 35 3.1 了解Node.js 35 3.1.1 谁在使用Node.js 35 3.1.2 Node.js的用途 36 3.2 Node.js安装 36 3.2.1 纵观Node.js安装位置 36 3.2.2 验证Node.js可执行文件 37 3.2.3 选择Node.js IDE 37 3.3 使用Node.js包 38 3.3.1 什么是Node封装模块 38 3.3.2 了解Node包注册表 38 3.3.3 使用Node包管理器 38 3.3.4 搜索Node封装模块 39 3.3.5 安装Node封装模块 40 3.3.6 使用package.json 41 3.4 创建Node.js应用程序 43 3.4.1 创建Node.js模块封装 43 3.4.2 将一个Node.js封装模块发布到NPM注册表 45 3.4.3 在Node.js应用程序中使用Node.js封装模块 46 3.5 将数据写入控制台 47 3.6 小结 49 3.7 下一章 49 第4章 在Node.js中使用事件、监听器、定时器和回调 51 4.1 了解Node.js事件模型 51 4.1.1 比较事件回调和线程模型 51 4.1.2 在Node.js中阻塞I/O 52 4.1.3 会话示例 54 4.2 将工作添加到事件队列 54 4.2.1 实现定时器 55 4.2.2 使用nextTick来调度工作 58 4.2.3 实现事件发射器和监听器 59 4.3 实现回调 62 4.3.1 向回调函数传递额外的参数 63 4.3.2 在回调中实现闭包 64 4.3.3 链式回调 65 4.4 小结 66 4.5 下一章 66 第5章 在Node.js中处理数据I/O 67 5.1 处理JSON 67 5.1.1 把JSON转换成JavaScript对象 67 5.1.2 把JavaScript对象转换为JSON 68 5.2 使用Buffer模块缓冲数据 68 5.2.1 了解缓冲数据 69 5.2.2 创建缓冲区 69 5.2.3 写入缓冲区 70 5.2.4 从缓冲区读取 71 5.2.5 确定缓冲区长度 72 5.2.6 复制缓冲区 73 5.2.7 对缓冲区切片 74 5.2.8 拼接缓冲区 75 5.3 使用Stream模块来传送数据 76 5.3.1 Readable流 76 5.3.2 Writable流 78 5.3.3 Duplex流 81 5.3.4 Transform流 82 5.3.5 把Readable流用管道输送到Writable流 84 5.4 用Zlib压缩与解压缩数据 85 5.4.1 压缩和解压缩缓冲区 85 5.4.2 压缩/解压缩流 87 5.5 小结 88 5.6 下一章 88 第6章 从Node.js访问文件系统 89 6.1 同步和异步文件系统调用 89 6.2 打开和关闭文件 90 6.3 写入文件 91 6.3.1 简单文件写入 91 6.3.2 同步文件写入 92 6.3.3 异步写入文件 93
本书的写作风格与笔者在新东方的授课风格一致:平实、浅显,放弃新名词,把所有深奥的内容变得浅显易懂。笔者不喜欢罗列一堆的新名词,抄大段大段的理论来炫耀自己。作为一个有多年编程经验的程序员,笔者相信“代码就是硬道理”,因此本书中涵盖了 Ajax 的绝大部分实际应用场景。希望读者也不要仅仅“看书”,而一定要参照本书进行动手操作,将每个应用都实际做一遍,相信会有很大的提高。 目录 序言 3 第 2章 Ajax 初体验 5 2.1 Ajax带来的优势 5 2.2 传统的 JSP 聊天室 6 2.2.1 实现业务逻辑组件 7 2.2.2 实现控制器 11 2.2.3 实现视图 12 2.2.4 JSP聊天室的问题 14 2.3 Ajax聊天室 14 2.3.1 异步发送请求 14 2.3.2 解决多余刷新的问题 16 2.3.3 解析服务器响应 19 2.3.4 何时发送请求 20 2.3.5 Ajax 聊天室的特点 24 2.4 传统 Web 应用与 Ajax 的对比 24 2.5 小结 25 第 17章 基于 JSON-RPC-Java 的 Ajax 应用:在线相册 26 17.1 实现 Hibernate 持久层 26 17.1.1 设计 Hibernate 的持久化类 26 17.1.2 完成配置文件和映射文件 28 17.1.3 数据库的设计 31 17.2 实现 DAO 组件 31 17.2.1 DAO 接口定义 31 17.2.2 完成 DAO 组件的实现类 33 17.3 实现服务器处理类 35 17.4 实现客户端调用 40 17.4.1 暴露 Java对象 40 17.4.2 处理用户登录 41 17.4.3 周期性地获得用户相片列表 44 17.4.4 处理用户注册 45 17.4.5 处理上传 47 17.5 客户端 JSP 页面 51 17.6 小结 54 第 18章 使用 AjaxTags 简化开发 54 18.1 AjaxTags 的下载和安装 54 18.1.1 AjaxTags 概述 55 18.1.2 下载和安装 AjaxTags 55 18.2 AjaxTags 入门 57 18.2.1 编写处理类 57 18.2.2 使用标签 59 18.3 处理类的几种形式 60 18.3.1 使用普通Servlet 生成响应 60 18.3.2 使用 AjaxXmlBuilder 辅助类 62 18.3.3 使用 BaseAjaxAction 生成响应 66 18.3.4 使用 BaseAjaxServlet 生成响应 68 18.3.5 使用非 Java响应 70 18.4 AjaxTags 常用标签的使用 71 18.4.1 使用自动完成标签 71 18.4.2 使用 area 标签 76 18.4.3 使用 anchors 标签 77 18.4.4 使用 callout 标签 78 18.4.5 使用 htmlContent 标签 80 18.4.6 使用 portlet 标签 82 18.4.7 使用 select 标签 83 18.4.8 创建 Tab页 84 18.4.9 使用 displayTag标签 85 18.4.10 使用 updateField 标签 87 18.5 关于 AjaxTags 的选择 89 18.5.1 AjaxTags 的优势和使用场景 89 18.5.2 AjaxTags 的缺点 90 18.6 小结 90 第 19章 Ajax案例:Blog系统 90 19.1 实现 Hibernate 持久层 91 19.1.1 设计 Hibernate 的持久化类 91 19.1.2 完成映射文件 94 19.1.3 数据表的结构 97 19.2 实现 DAO 组件 97 19.2.1 DAO 接口定义 97 19.2.2 分页实现 99 19.2.3 DAO 组件的实现 101 19.2.4 配置 DAO 组件 105 19.3 实现业务逻辑组件 105 19.3.1 业务逻辑组件的接口 105 19.3.2 业务逻辑组件的实现类 107 19.3.3 配置业务逻辑组件 111 19.4 在客户端暴露业务逻辑组件 112 19.4.1 初始化 Spring容器 112 19.4.2 定义 DWR的核心Servlet 113 19.4.3 将 Spring容器中的 Bean 转化成JavaScript 对象 113 19.5 在客户端调用 JavaScript 对象 114 19.5.1 获取 Blog文章列表 115 19.5.2 控制 Blog文章列表的翻页 116 19.5.3 页面加载时的动作 117 19.5.4 查看评论 117 19.5.5 控制评论的翻页 119 19.5.6 添加评论 119 19.5.7 查看 Blog文章内容 121 19.5.8 添加新的Blog文章 122 19.6 系统视图 123 19.7 小结 126
1. 2款jQuery图片自动切换常用广告代码 2. jquery+css五屏焦点图淡入淡出+圆形按钮切换广告图片代码 3. jQuery+CSS实用图片收缩与放大效果插件 4. jquery+div实现同时滑动切换的图文展示特效插件下载 5. jquery+div带动画按钮图片手动与自动切换的特效代码 6. jquery一页多用的飞飞图片幻灯插件演示 7. jquery仿flash产品图片多角度展示特效代码 8. jquery仿flash图片放大相册的插件代码(Zoomer Gallery)下载 9. jquery仿flash的图片幻灯片播放特效实例完整版 10. jquery仿LightBox图片盒子单击逐渐放大的图片展示的插件下载 11. jquery仿Lightbox的插件jQuery UI.ariaLightbox点击图片放大显示插件下载 12. jQuery仿动感flash自动滚动图片切换广告插件 13. jQuery仿新浪新闻图片浏览器(支持鼠标左右滚动控制图片切换) 14. jquery仿苏宁易购商城产品图片全方位展示功能 15. jquery制作漂亮按钮示例打包 16. jQuery动态切换网页背景的大块图片的导航栏代码 17. jquery图文排行混合互相切换效果(仿Vancl效果) 18. jQuery图片插件之鼠标放在图片上出现动态的hover效果插件 19. jQuery图片自动轮播淡入淡出的幻灯插件iFadeSlide 20. jQuery大气banner带时间线自动播放的焦点图轮番切换代码 21. jquery定时自动切换banner广告图片动画插件示例 22. jquery实现LightBox图片点击放大效果的图片盒子插件 23. jQuery实现slider图片滚动,单个滚动,成组滚动示例 24. jQuery实现产品图片循坏旋转的代码 25. jQuery实现动态图文分组排序切换源码 26. jQuery实现图片3D旋转特效插件 v1.1版本下载 27. jQuery实现图片3D立体感的前后轮番展示特效 28. jQuery实现图片取景器仿相机拍照功能的插件photoShoot 29. jQuery实现图片变色特效插件与实例下载如jquery图片变灰色 30. jquery实现图片可拖动展示的实例下载 31. jQuery实现拖动滚动条的缩略图排列插件下载 32. jQuery实现焦点图片Flash自动平滑渐变效果 33. jQuery实现鼠标移到链接提示显示图片功能插件 34. jquery实现鼠标经过链接放大图片特效代码 35. jquery实用Banner大图片横向切换效果 36. jquery实用产品图片展示动感切换效果源码 37. jquery平滑交换真彩色的图片逐渐变为黑白图像的代码 38. jquery异步加载图片的插件jqGalScroll下载 39. jquery微型相册插件Micro Image Gallery下载 40. jQuery把图片放大及变亮特效插件下载 41. jquery拖动滚动条控制图片滚动及图片放大特效的示例 42. jquery旋转式图片切换并带图片放大功能 43. jQuery漂亮网页右上角双层撕角广告代码 44. jquery漂亮网页布局综合定时器、切换间隔、滚动时间、滚动图片个数等示例 45. jQuery演示Ajax加载并显示图片的相片画廊实例 46. jQuery版Sexy Lightbox 2.3内容修饰框插件下载(支持HTML,flash,图片,视频等) 47. jquery版自动滚动图片动画特效插件可处理图片JSON数据源 48. jQuery电子商务网站产品展示插件之仿苏宁易购商城产品图展示特效 49. jquery相册播放器插件实现无序图片列表转换成有序并播放 50. jQuery移动网页背景图浮云流水特效 51. jquery简单控制上下、左右四方向滚动的特效插件下载 52. jquery缩略图滚动特效之带小图的网页元素滚动轮播插件 53. jquery网站顶部滑动广告插件 54. jquery自动播放图片滚动漂浮式效果的示例 55. jquery贴图旋转及缩放插件下载 56. jquery门户网站首页全屏弹性伸缩至小屏的广告代码(非常实用) 57. jQuery黑色动感Ajax无刷新动态分组图片效果代码 58. jquery黑色风格左右带箭头的图片浏览控制插件下载 59. jQuery鼠标滑动图片显示标题与简介的滑动动感特效代码 60. jQuery鼠标移上小图显示大缩略图功能 61. js仿淘宝网鼠标经过缩略图放大图片效果的jQuery Fancy Hover Effect完整实例 62. Supersized jQuery全屏相册图片自动切换插件 63. [荐]jquery仿flash漂亮横向图片滚动效果完整版(兼容性非常好) 64. [荐]jQuery焦点图幻灯切换插件Tab选项卡(soChange 1.4)下载 65. 一款jQuery仿flash放大图片的相册插件 66. 一款jQuery仿苹果mac os系统经典菜单效果源码 67. 一款jQuery动感左右滚动图片切换插件带缩图一起滚动 68. 一款jQuery实现banner图片轮显、广告切换、图片幻灯插件EasySlide下载 69. 一款jquery实现图片放大插件imgBox下载 70. 一款jQuery实现漂亮精美相册插件源码 71. 一款jQuery左右箭头控制大图滚动切换的代码 72. 一款jquery常用产品图片放大效果插件下载 73. 一款jQuery插件slide幻灯片切换图片宽高自适应 74. 一款jQuery漂亮淡出淡入焦点大图切换源码 75. 一款jquery缩略图商品切换放大展示功能插件 76. 一款使用jQuery左右控制横向图片滚动的代码 77. 一款基于jquery定时图片切换代码下载 78. 一款实用经典jQuery图片切换展示插件下载 79. 下载jQuery动感广告图片翻转插件(PictureRoll)示例版 80. 下载JQuery淡入淡出效果插件InnerFade 81. 下载jquery走马灯效果图片连续滚动的实例 82. 几种简单实用jQuery焦点图片自动切换效果 83. 分享jquery仿LightBox动感多样式图片放大插件zoomimage下载 84. 分享jquery仿当当网店铺图片轮番切换(同时显示图片说明)代码下载 85. 分享一款jQuery thumbnail惟美的图片Tip提示效果 86. 分享一款jquery仿lightbox无刷新图片显示插件PrettyPhoto下载 87. 分享多款jQuery图片预加载切换效果(上下滚动、淡入淡出渐变等) 88. 动感十足jquery仿腾讯图片滚动浏览功能(带左右控制按钮)MovingBoxes插件下载 89. 参考JQZOOM插件使用jQuery仿京东网产品展示切换及放大效果的代码 90. 又一款jquery自动轮播焦点图+内容的广告代码 91. 又一款非常不错的jQuery+div大气新闻图片切换插件代码(AnythingSlider)下载 92. 基于jQuery带时间轴宽屏图片切换源码 93. 基于jQuery的横向无缝图片滚动插件jcarousel **** …… …… …… 很多很多

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ding Jiaxiong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值