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