前端學(xué)PHP,ajax

php血筑,又稱超文本預(yù)處理器绘沉,是在服務(wù)器端執(zhí)行的腳本語言, Hypertext Preprocessor。

訪問過服務(wù)器的標(biāo)志:訪問的時候要有協(xié)議(http)豺总。協(xié)議车伞,網(wǎng)絡(luò)協(xié)議的簡稱,網(wǎng)絡(luò)協(xié)議是通信計算機(jī)雙方必須共同遵從的一組約定喻喳。
網(wǎng)址組成:協(xié)議 - 域名 - 路徑 - 數(shù)據(jù) - 錨點(diǎn) - 端口號(被瀏覽器省略了)
https(協(xié)議)://www.reibang.com(域名)/u/a.html(路徑)?a=1&b=2(數(shù)據(jù))#top(錨點(diǎn)) :80(端口號)另玖,
此路徑不存在,我自己編的,嘻嘻~~~,為了效果(懶得找).
自己電腦上也可以使用軟件來模擬服務(wù)器,網(wǎng)上提供了很多這樣的軟件表伦,我選用phpstudy谦去。這個軟件中集成了Apache服務(wù)器、MySql數(shù)據(jù)庫和PHP編譯器绑榴。每個服務(wù)要運(yùn)行起來哪轿,都需要開啟服務(wù)。Apache和MySql都需要開啟翔怎。php編譯器不需要窃诉,因為他不是一個服務(wù)。
phpstudy安裝的時候赤套,安裝路徑不能有中文漢字和空格字符飘痛。 強(qiáng)烈建議直接放在某個盤下,


自己訪問自己:localhost 或者 127.0.0.1 或者本機(jī)IP地址 -- 代表WWW文件夾

  1. 使用http訪問文件,都要放在WWW的文件夾中
  2. 提前開啟phpstudy容握,否則訪問不到
  3. 文件名和文件夾名不允許出現(xiàn)空格和中文
  4. 訪問文件宣脉,必須使用域名或者ip地址
    文件后綴是php,其中的代碼放在一個結(jié)構(gòu)中:<?php開頭 剔氏,?>結(jié)尾塑猖,每行結(jié)束必須有;
    注釋和js中使用一致竹祷。

設(shè)置phpstudy擁有目錄列表
打開phpStudy - 其他選項菜單 - phpStudy設(shè)置 - 允許目錄列表



效果:


返回上一級目錄

js 連接php

1.form表單直接連接:<form action="路徑 " method="post/get"></form>
<form action="../login.php" method="post"></form>
2. 創(chuàng)建ajax 連接PHP,客戶端向服務(wù)器發(fā)起請求(Request)

ajax 異步的js和xml,async javascript and xml
作用:在不刷新頁面的情況,發(fā)送http請求
(1)設(shè)置get請求連接

// 1.創(chuàng)建ajax對象 - 創(chuàng)建一部電話
var xhr = new XMLHttpRequest();
// console.log(xhr);
// 2.打開連接 - 拿起電話羊苟,點(diǎn)擊號碼
xhr.open('get','demo.php?id=1',true); // 第三個參數(shù)是布爾值塑陵,表示是否異步,發(fā)送的數(shù)據(jù)在?后
// 3.發(fā)送請求
xhr.send();

// 發(fā)送請求的時候可以攜帶數(shù)據(jù) - 以字符串的形式發(fā)送
// xhr.send();
// 4.監(jiān)聽請求狀態(tài) - 等待接聽
xhr.onreadystatechange = function(){
    // 判斷xhr的狀態(tài)(0~4  4的時候就圓滿完成)和請求的狀態(tài) - 200
    if(xhr.readyState===4 && xhr.status==200){
        // 接收響應(yīng)數(shù)據(jù)
        let res = xhr.responseText;
        // console.log(res);
        console.log(456);
  }
}

(2)設(shè)置post請求連接

    var xhr = new XMLHttpRequest();
    xhr.open("post","../login.php");
    xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
    xhr.send(`username=${username}&password=${password}`);
    xhr.onreadystatechange = function(){
        if(xhr.readyState === 4 && xhr.status === 200){
            var res = xhr.responseText;
            res = JSON.parse(res);
            // console.log(res);
            if(res.meta.status===201){
                alert(res.meta.msg);
                location.href = "home.html";
            }else{
                alert(res.meta.msg);
                return false;
            }
        }
    }

PHP接收js傳送數(shù)據(jù),,服務(wù)器向客戶端發(fā)起相應(yīng)(Reponse)

user-agent: Mozilla/5.0 # 產(chǎn)生請求的瀏覽器信息
accept: application/json # 表示客戶端希望接受的數(shù)據(jù)類型
Content-Type: application/x-www-form-urlencoded # 客戶端發(fā)送的實體數(shù)據(jù)格式
Host: 127.0.0.1 # 請求的主機(jī)名(IP)
常見的請求方式:

  1. GET: 查
  2. POST: 增
  3. PUT: 改
  4. DELETE: 刪

GET和POST的區(qū)別

  1. get請求的數(shù)據(jù)會顯示在地址欄蜡励,post的數(shù)據(jù)不顯示
  2. get請求的數(shù)據(jù)大小有限制:
    • IE: 2083 個字符
    • FireFox: 65536 個字符
    • Safari: 80000 個字符
    • Opera: 190000 個字符
    • Chrome: 8182 個字符
      post請求的數(shù)據(jù)沒有限制令花,除非服務(wù)器主動設(shè)置。
  3. get請求的數(shù)據(jù)類型必須是ASCII凉倚,post沒有限制
  4. get相對不安全兼都,post相對安全
    get請求接收數(shù)據(jù),GET 請求是沒有請求體數(shù)據(jù)的
<?php
header("content-type:text/html;charset=utf8");
// 接收傳過來的省份id
$id = $_GET["id"];
$con = mysqli_connect("localhost","root","root","test");
mysqli_query($con,"set names utf8");
$res = mysqli_query($con,"select * from region where pid=$id");
$arr = [];
while($row = mysqli_fetch_assoc($res)){
    $arr[] = $row;
}
echo json_encode($arr);

post 請求接收數(shù)據(jù),POST 請求有請求體數(shù)據(jù)

header("content-type:text/html;charset=utf8");
// 接收數(shù)據(jù)
// var_dump($_POST);
$username = $_POST["username"];
$password = $_POST["password"];

// var_dump($username,$password);

$con = mysqli_connect("localhost","root","root","test");
$sql = "select * from user where username='$username'";
$res = mysqli_query($con,$sql);
// 從中提取一條數(shù)據(jù)來驗證
$row = mysqli_fetch_assoc($res);
if($row){
    // 用戶名存在
    // 驗證密碼是否正確
        echo '<script>
            alert("登陸成功");
            location.href = "home.html";
        </script>';
    }

php輸出方式

echo 1; // 文本方式輸出,輸出基本類型
echo("6");
var_dump(1); // int(1) 稽寒;基本類型和復(fù)雜類型都能輸出扮碧;類似于console.log 程序員用
header("content-type:text/html;charset=utf8");  // 設(shè)置編碼 中文會亂碼
print("世界你好");  // 輸出簡單類型
print_r("PHP你好");  // 可輸出復(fù)雜類型

變量

使用$來定義變量

$a = 10;

字符串
單引號只能輸出純字符串,雙引號可以輸出變量

$a = 5;  
echo("$a");  // 5
echo '$a';  // $a

數(shù)組:

$arr = [
    "name"=>"張三",
    "age"=>"12"
];
$brr = [3,"57","9"];
var_dump($arr);  // array(2) { ["name"]=> string(6) "張三" ["age"]=> string(2) "12" } 每個漢字占三個字符串
var_dump($brr);  // array(3) { [0]=> int(3) [1]=> string(2) "57" [2]=> string(1) "9" }
// 遍歷
$arr = [
    "name"=>"張三是大眾人物",
    "age"=>"12"
];
foreach($arr as $a){  // 遍歷值
    echo "$a";    
};   // 張三是大眾人物12
foreach($arr as $c => $b){  // 遍歷鍵值
    echo "$c - $b";
};  // name - 張三是大眾人物age - 12
$str = json_encode($brr); // 將數(shù)組轉(zhuǎn)為字符串
echo $str;  // {"name":"\u5f20\u4e09\u662f\u5927\u4f17\u4eba\u7269","age":"12"}
$crr = json_decode($str,true);  // json字符串轉(zhuǎn)化為數(shù)組
var_dump($crr);  // array(2) { ["name"]=> string(21) "張三是大眾人物" ["age"]=> string(2) "12" }

字符串拼接

$e = 5 . 90;$a = "6" . 90;echo $a,$e; // 690590
echo("<meta charset='utf-8'>");  // 可定義字符串引用類型瓦胎,但作為數(shù)據(jù)芬萍,不推薦
echo "<b>你好世界";  // 你好世界 加粗這里都是單標(biāo)簽引用
<?php
// echo '<b>hello world</b>';
// echo '<meta charset="utf-8">';
header("content-type:text/html;charset=utf8");
// echo '你好世界';

// 連接數(shù)據(jù)庫
// 1.創(chuàng)建連接
$con = mysqli_connect('localhost','root','root','test');
// // var_dump($con);
// // 2.執(zhí)行增刪改查的命令語句
$res = mysqli_query($con,'select * from personInfo');
echo '<pre>';   // 變得容易看一點(diǎn)
var_dump($res);
// 3.從這個結(jié)果拿出能看懂的數(shù)據(jù) - 從結(jié)果中拿出第一條數(shù)據(jù)
$row = mysqli_fetch_assoc($res);
$row1 = mysqli_fetch_assoc($res);
$row2 = mysqli_fetch_assoc($res);
$row3 = mysqli_fetch_assoc($res);
echo "<pre>";
print_r($row);

$arr = [];
while($row = mysqli_fetch_assoc($res)){
    $arr[] = $row;
}
echo '<pre>';
print_r($arr);

/*
查詢:
    1.連接數(shù)據(jù)庫
        連接 = mysqli_connect(主機(jī)名,用戶名,密碼,要連接數(shù)據(jù)庫名稱)
        連接成功返回一個object,連接失敗返回false
    2.執(zhí)行命令語句
        結(jié)果 = mysqli_query(連接,字符串命令語句)
        查詢成功返回object搔啊,查詢失敗了false
    3.從結(jié)果中提取數(shù)據(jù)
        一行數(shù)據(jù) = mysqli_fetch_assoc(結(jié)果) - 最終的數(shù)據(jù)是一個數(shù)組
*/

// 增
// 1.連接數(shù)據(jù)庫
$con = mysqli_connect("localhost","root","root","test");
// 2.執(zhí)行命令語句
$res = mysqli_query($con,"insert personInfo(name,age,aid) values('吳九',19,3)");
// 執(zhí)行增、刪北戏、改的語句负芋,執(zhí)行結(jié)束的結(jié)果是一個布爾值,成功為true嗜愈,失敗為false
if($res){
    echo '成功';
}else{
    echo '失敗';
}


// 改
// 1.連接數(shù)據(jù)庫
$con = mysqli_connect("localhost","root","root","test");
// 2.執(zhí)行語句
$res = mysqli_query($con,"update personInfo set name='周扒皮' where id=6");
if($res){
    echo '成功';
}else{
    echo '失敗';
}


// 刪
$con = mysqli_connect("localhost","root","root","test");
// $res = mysqli_query($con,"delete from personInfo where id=8");
$res = mysqli_query($con,"delete from personInfo");
if($res){
    echo '成功';
}else{
    echo '失敗';
}

為了(提高逼格)更容易看,通常情況下響應(yīng)的數(shù)據(jù)格式:

{
    meta:{
        status:狀態(tài)碼,
        msg:"提示信息"
    },
    data:null
}

直接用這個格式替換echo "失敗";

if($res){
        // 注冊成功
        $arr = [
            "meta"=>[
                "status"=>201,
                "msg"=>"注冊成功"
            ],
            "data"=>null
        ];
    }else{
        // 注冊失敗
        $arr = [
            "meta"=>[
                "status"=>301,
                "msg"=>"注冊失敗"
            ],
            "data"=>null
        ];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旧蛾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蠕嫁,更是在濱河造成了極大的恐慌锨天,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剃毒,死亡現(xiàn)場離奇詭異病袄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)赘阀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門益缠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人基公,你說我怎么就攤上這事幅慌。” “怎么了轰豆?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵胰伍,是天一觀的道長齿诞。 經(jīng)常有香客問我,道長骂租,這世上最難降的妖魔是什么祷杈? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮菩咨,結(jié)果婚禮上吠式,老公的妹妹穿的比我還像新娘。我一直安慰自己抽米,他們只是感情好特占,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著云茸,像睡著了一般是目。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上标捺,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天懊纳,我揣著相機(jī)與錄音,去河邊找鬼亡容。 笑死嗤疯,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闺兢。 我是一名探鬼主播茂缚,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屋谭!你這毒婦竟也來了脚囊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤桐磁,失蹤者是張志新(化名)和其女友劉穎悔耘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體我擂,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衬以,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扶踊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泄鹏。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖秧耗,靈堂內(nèi)的尸體忽然破棺而出备籽,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布车猬,位于F島的核電站霉猛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏珠闰。R本人自食惡果不足惜惜浅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伏嗜。 院中可真熱鬧坛悉,春花似錦、人聲如沸承绸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽军熏。三九已至轩猩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荡澎,已是汗流浹背均践。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留摩幔,地道東北人彤委。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像或衡,于是被迫代替她去往敵國和親葫慎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353