以前有學過php都是先後端沒有分離的,因此也想去了解後端是怎麼寫出ajax接口的,可能問了別人或者上網找了不少資料都頗有有點懵,或者說直接用TP或者lavarel這些後端框架去寫,有時候看到這麼多東西或者涉及的文件越多,就容易越亂,因此就想找一種簡單明白一點的方法。這樣能夠方便本身平時作一些涉及簡單的CURD的小項目。php
有點簡單,就兩個文件:css
main.php
這個文件主要是用來寫數據庫鏈接的配置還有接口的邏輯。html
api.php
這個文件是用來管理全部接口還有訪問響應的配置。mysql
main.phpjquery
<?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)); } } } ?>
其實就是在接口鏈接使用?xxx=xxx這種方式發送一個參數,而後經過這個參數判斷要請求的接口是哪個
api.phpajax
<?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.htmlsql
<!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>