首页 技术 正文
技术 2022年11月17日
0 收藏 334 点赞 3,579 浏览 2241 个字

使用PHP写ajax接口

之前有学过php都是前后端没有分离的,所以也想去了解后端是怎么写出ajax接口的,可能问了别人或者上网找了很多资料都很有有点懵,或者说直接用TP或者lavarel这些后端框架去写,有时候看到这么多东西或者涉及的文件越多,就容易越乱,所以就想找一种简单明白一点的方法。这样可以方便自己平时做一些涉及简单的CURD的小项目。

有点简单,就两个文件:

  • main.php

    这个文件主要是用来写数据库连接的配置还有接口的逻辑。

  • api.php

    这个文件是用来管理所有接口还有访问响应的配置。

例子

在main.php里面配置好数据库连接,然后编写接口,示例:

main.php

<?php
header('Content-Type: text/html;charset=utf-8');
class Main{
// 配置数据库连接
public function conn(){
// (主机,账号,密码,数据库,端口号)
$conn = new mysqli('localhost','root', '123456','test');
$conn->set_charset("utf8");
// 检测连接
// if ($conn->connect_error) { die("数据库连接失败: " . $conn->connect_error); } echo "数据库连接成功";
return $conn;
}
// 测试接口
public function test(){
$a = $_POST['a'];
return json_encode(array('error' => 200, 'msg' => '接口连接成功','a'=>$a));
}
}
// 测试数据库查询
public function testSql(){
// 获取post过来的data
$id = $_POST['id'];
// 判断是否传值
if(!$id){
return json_encode(array('error' => 500, 'msg' => '参数缺失'));
}
// 定义数据库连接
$conn = $this -> conn();
// 建立数据库查询语句
$search = "SELECT * FROM `test` WHERE `id` = $id";
// $search = "SELECT * FROM `test`";
// 执行数据库查询语句(返回查询结果)
$result = $conn -> query($search);
// 遍历结果成数组
if(!$result) {
return json_encode(array('error' => 444, 'msg' => '无数据'));
} else {
while($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
$arr[]=$row;
}
// 输出查询结果
return json_encode(array('error' => 200, 'data' => $arr));
}
}
}
?>

在api.php中添加接口列表

其实就是在接口连接使用?xxx=xxx这种方式发送一个参数,然后通过这个参数判断要请求的接口是哪一个

api.php

<?php
header('Content-Type: text/html;charset=utf-8');
// 指定允许其他域名访问
header('Access-Control-Allow-Origin:*');
// 响应类型
header('Access-Control-Allow-Methods:POST');
// 响应头设置
header('Access-Control-Allow-Headers:x-requested-with,content-type'); require_once('main.php'); $type = @$_GET['type'];
$main = new Main();
if($type == 'test'){
echo $main -> test();
}
elseif($type == 'testSql'){
echo $main -> testSql();
}
?>

调用接口

index.html

<!DOCTYPE html>
<html lang="zh"><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>测试接口</title>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head><body>
<script>
$.ajax({
url: 'api.php?type=test',
type: 'post',
data: {
a: '123'
},
dataType: 'JSON',
success: function (data) {
console.log(data);
}
});
$.ajax({
url: 'api.php?type=testSql',
type: 'post',
data: {
id: 1
},
dataType: 'JSON',
success: function (data) {
console.log(data);
},
error: function(err) {
console.log(err)
}
});
</script>
</body></html>
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,104
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,580
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,428
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,200
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,835
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,918