使用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>

使用PHP写ajax接口的更多相关文章

  1. .net学习之Session、Cookie、手写Ajax代码以及请求流程

    1.IIS 7 以上版本集成了两种模式,一种是经典模式,一种是集成模式(直接将asp.net框架集成到IIS中) 2.浏览器和服务器端通过什么技术来实现的?Socket(套接字),通信的语法是HTTP ...

  2. 性能测试培训:Ajax接口级性能测试之jmeter版

    性能测试培训:Ajax接口级性能测试之jmeter版   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest认为工具 ...

  3. 微信小程序request(ajax)接口请求封装

    微信小程序request(ajax)接口请求封装 最近在进行小程序的编写,需要调用后端接口,经常要用到wx.request方法,所以就自己封装了一下,简化一下代码,如果能给大家提供帮助更好,在封装的时 ...

  4. 不借助jquery封装好的ajax,你能用js手写ajax框架吗

    不借助jquery封装好的ajax,你能手写ajax框架吗?最基础的ajax框架,一起来围观吧. .创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); ...

  5. web api写api接口时返回

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...

  6. 【Node.js】二、基于Express框架 + 连接MongoDB + 写后端接口

    在上节,我们讲了如何搭建express环境,现在我们说说如何通过node.js写服务接口给前端调用 1. 首先通过MongoDB建好数据库与表格 例如,我的数据库名字为db_demo,数据库表格为go ...

  7. 当使用cokie进行数据交互时候,cookie只需存储该对象的id即可不需要存放其他数据;只需在写个接口根据cookie里面的对象id来创建对象

    当使用cokie进行数据交互时候,cookie只需存储该对象的id即可不需要存放其他数据:只需在写个接口根据cookie里面的对象id来创建对象

  8. 用原生JavaScript写AJAX

    //原生js写ajax就像打电话 //打电话分下面4步//1.拿出手机//2.拨号//3.说话//4.听对方说话 //ajax也分下面4步//1.创建ajax对象//2.连接到服务器//3.发送请求( ...

  9. 原生js写Ajax

    //原生js写ajax就像打电话 //打电话分下面4步//1.拿出手机//2.拨号//3.说话//4.挺对方说话 //ajax也分下面4步//1.创建ajax对象//2.连接到服务器//3.发送请求( ...

随机推荐

  1. 404 Note Found 队 Alpha8

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  2. cocos2d-x开发: 完善接口范例分离模块

    在上一篇文章中,我阐述了一下为什么要做分离这种工作,这篇文章没什么重点,只是将上一次没有完善的工作做完.原本我想做到像Lua-tests那样子,能够一次完全显示所有的tests,然后选择要执行的tes ...

  3. ORA-00600:internal error code,arguments:[keltnfy-idmlnit],[46],[1],[],[],[],[],[]

    如图:在DBCA进行到3%时.报错 由于/etc/hosts与/etc/sysconfig/network不正确应,所以报错 [root@ocm2 ~]# cat /etc/hosts # Do no ...

  4. java的多线程和并发库

    一.多线程基础知识 1.传统使用类Thread和接口Runnable实现 1)在Thread子类覆盖的run方法中编写运行代码 2)在传递给Thread对象的Runnable对象的run方法中编写代码 ...

  5. java String详解

    创建字符串: 1. String(char a[]) char a[] = {'g','o','o','d'}; String str = new String(a); 2. String(char ...

  6. 常用LLDB指令

    print.p: 打印内存地址 po: 打印对象   1.读取内存 memory read/数量格式字节数 内存地址 x/数量格式字节数 内存x/3xw 0x10010 格式:x是16进制,f是浮点, ...

  7. python3爬虫-通过requests爬取图虫网

    import requests from fake_useragent import UserAgent from requests.exceptions import Timeout from ur ...

  8. MySQL更新丢失

    MySQL多主结构(比如: MGR Multi Master模式),如果多主都可以写的话,很有可能出现更新丢失的情况. 定义:  T1时间,T2时间,T3时间 定义:  事务A, 事务B Node1节 ...

  9. centos7添加新网卡实现双IP双网关

     问题背景: 业务需要,针对业务需要不同地域的机构访问,所以需要在同一台机器上配置不同IP并配置不同网关,实现不用机构可以访问同一台服务器办理业务. 系统环境: centos linux7 网络环境: ...

  10. cookie,session,token

    发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应,  尤其是我不用 ...