PHP前后端分离入门项目——新闻标题列表
前后端分离——新闻标题列表项目
后端用PHP写API接口,前端用JS通过Ajax请求API数据!
用PHP从数据库获取数据,再转成JSON格式,JS请求到数据,再转化JSON数据,操作DOM显示!
之前用PHP和HTML混编,一个人完成项目,现在前后端分离用PHP搞后端数据,JS搞前端逻辑!

注意:此项目是写文章的列表页接口,详情页接口,做一个新闻网的项目!
数据库创建数据
1、创建数据库news
2、创建标题表,自增id、标题、图片、日期
3、创建文章详情表,自增id,关联id、来源信息、内容、日期等!
插入数据:
UPDATE `atctitle` SET `img` = 'https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0507%2Ff062ac25j00ru9gbh000jc000go00b4c.jpg&thumbnail=660x2147483647&quality=80&type=jpg' WHERE `atctitle`.`id` = 1; |
先后端:写API
一、新建文章标题API文件
使用PHP查询JSON格式的数据!
参考资料:菜鸟教程PHP教程,从 MySQL 数据库读取数据
二、连接数据库:提取连接数据库的公共代码
|
SQL语句:修改SQL语句为查询所有文章标题!倒序!
SELECT * FROM `atctitle` ORDER BY `atctitle`.`id` DESC |
三、筛选文章,打印获取的结果
|
如下图

通过循环语句和函数fetch_assoc()把数据打印出来!$result->fetch_assoc()是一条数组数据!
if ($result->num_rows > 0) { |
如下图

注意:查询出来的数据,还不能称之为接口!什么格式才是接口呢?数组套对象的格式!
四、转成JSON格式去输出——数组格式
需要转码的代码!百度搜索PHP header JOSN
//声明header为json |

五、设数组形成——一列数据的数组!
使用array_push()函数,追加数组
// 在数组后面追加数据,这里在$arr数组后面,追加了两条数据,可以追加单个或多条数据 |
使用追加数组的方式,把获取到的数组,同信息的值传给数组!省略键,只有值了!消除了键值这种格式!只有纯粹的某一类数据,并以0开始下标的数组,而原始数据为相关数据的键值对!
// 新建一个数组,用于存放标题 |

注意:这样的数组还是不能称为API,还需要转码成JSON格式才叫API
六、数组转JSON格式——最后一步JSON格式
使用json_encode函数:PHP json_encode() 用于对变量进行 JSON 编码
|

这样就完成了一个API,后端的事就完成了,现在可以开始写前端代码了!
后前端:写网页
一、新建index.html首页文件
二、通过JS代码,请求接口数据,并展示出来
使用Ajax(Asynchronous Javascript And XML) 异步 JavaScript 和 XML 请求数据!
特别的:Ajax步骤
执行步骤:https://blog.csdn.net/weixin_50602266/article/details/121910781 |
注意:AJAX 不是新的编程语言,而是一种使用现有标准的新方法。优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。XMLHttpRequest 只是实现 Ajax 的一种方式。
<script> |

前端请求到数据,可以通过代码方式,把请求的数据按自己的方式展示出来!现在请求到的数据返回来的是字符串!还需要转化为数组
三、把请求到的JSON字符串转化成JSON对象格式
什么是 JSON ?
JSON: JavaScript Object Notation(JavaScript 对象表示法)
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
- JSON 是轻量级的文本数据交换格式
- JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
使用 JSON.parse() 方法将数据转换为 JavaScript 对象。
JSON.parse(text[, reviver]) |
注意:JSON 通常用于与服务端交换数据。在接收服务器数据时一般是字符串。
// 把返回来的是JSON字符串转化为对象输出! |
结果如下
国际原子能机构总干事:扎波罗热核电站所在城市居民开始疏散,俄罗斯称美国在乌克兰研究可引发人类疫情的病原体,乌军称首次击落俄军“匕首”导弹,高超声速导弹神话破灭? |
四、把对象数据——展示到网页中
通过循环等方式把对象(object)内的数据,逐条生成页面内容
// 把请求到的数据,怎么输出展示,目前返回来的是字符串! |

完成:访问API为什么是GET请求?没说明呀,客户端通过JS的Ajax访问API时,执行对应PHP文件,从数据库中获取数据,处理后打印JSON格式的数据,服务器把这些数据发送给客户端,JS代码再把JSON字符转化为对象,再操作DOM显示到页面中!






