首先PHP頁面和HTML頁面可以長得一模一樣,唯一的區(qū)別就是必須放在服務(wù)器的文件夾底下横媚。
php常用語法介紹
- php標(biāo)簽
<?php
這個一般叫作服務(wù)器端標(biāo)記
?>
正如JS需要放到script標(biāo)簽里面寿谴,php代碼也需要放到php標(biāo)記里面芹枷。這里面的內(nèi)容都會被服務(wù)器解析為服務(wù)端代碼。
<?php
echo //這里的echo跟js中的alert有些類似,可以輸出只不過alert會彈一個框出來
?>
- 內(nèi)容輸出
- Php中的echo會把內(nèi)容輸出到html代碼里面
<?php
echo ‘a(chǎn)aa’;//就會在頁面輸出aaa,,并且看不到php標(biāo)記贝咙。只能看到結(jié)果中的內(nèi)容。
?>
- echo 'string';
單引號的內(nèi)容會被解析成字符串 - echo "$"
雙引號中如果是字符串拂募,則與單引號沒差別庭猩;
如果是變量,則會輸出變量的值陈症; - print_r():函數(shù)輸出復(fù)雜數(shù)據(jù)類型,比如數(shù)組,對象
- var_dump():函數(shù)輸出詳細信息蔼水,如對象、數(shù)組
$arr =array(1,2,'123');
echo'123';
//結(jié)果為123
print_r($arr);
//結(jié)果為Array ( [0] => 1 [1] => 2 [2] => 123 )
var_dump($arr);
/*結(jié)果為
array
0 => int 1
1 => int 2
2 => string '123'
(length=3)
- 變量聲明
與JavaScript不同之處在于它聲明變量之前必須加$符號.
$是php中變量的標(biāo)志 - $符號開頭录肯,其后是變量的名稱
- 變量名稱必須以字母或下劃線開頭趴腋,不能以數(shù)字開頭
- 變量名稱只能包含字母數(shù)字字符和下劃線(A-z、0-9 以及_)
- 變量名稱對大小寫敏感
- Php中的變量不需要定義就可以直接使用
<?php
$a= 12;
echo $a; //12;
?>
如果變量不帶$直接echo ,會自動解析成字符串论咏。
換句話說优炬,php里面可以不加單引號直接加字符串。(但是不推薦這么寫)
<?php
echo abc; //abc;
?>
字符串拼接
Php中的字符串拼接:需要用到 “.” 而JS是用 “+”
當(dāng)時產(chǎn)生了疑問厅贪,那么JS中的 “.”php需要用什么符號穿剖? 這里就需要用“->”函數(shù):
PHP雖然系統(tǒng)內(nèi)建了一些函數(shù),但是這不影響我們定義自己的函數(shù),函數(shù)的作用就是在代碼中可以重復(fù)使用的語法塊頁面加載的時候不會執(zhí)行只有在被調(diào)用的時候才會執(zhí)行基礎(chǔ)語法
function functionName() {
這里寫代碼
}
function sayhi(){
echo "Hello World";//無參數(shù) 無返回值的函數(shù)
}
function sayName($name){
echo $name.'hello';//有參數(shù) 無返回值的函數(shù)
}
//調(diào)用
sayName('fox'); //foxhello
function sayFood($food='
flower'){
echo $food; //參數(shù)有默認值的函數(shù)
}
sayFood(); //flower
sayFood(‘water’); //water
function sum($a,$b){
return $a+$b; //有返回值的函數(shù)
}
sum(1,2); // 3
- 定義最基礎(chǔ)的類
class fox{
public $name = 'jack';
public $age = 10;
}
$fox = new $fox;
$name = $fox->name; //對象屬性取值卦溢,并保存在$name中
$fox->name = '小狐貍'; //對象屬性賦值糊余,對象name屬性賦值為‘小狐貍’
- 帶構(gòu)造函數(shù)的對象
class fox{
//屬性,外部無法訪問
var $name = 'foxes';
public $age = 18;
//定義方法 用來獲取屬性
function Name(){
return $this->name;
}
- 構(gòu)造函數(shù)可以傳入?yún)?shù)
function fox($name){
$this->name = $name
}
//定義了構(gòu)造函數(shù) 需要使用構(gòu)造函數(shù)初始化對象
$fox = new fox('小狐貍
');
//調(diào)用對象方法,獲取對象名
$foxName = $fox->Name(); //小狐貍
- header()函數(shù)
//用來向客戶端(瀏覽器)發(fā)送報頭,如果出現(xiàn)中文無法顯示单寂,可以在PH代碼頂部添加如下代碼
header("content-type:text/html; charset=utf-8");
靜態(tài)頁面和動態(tài)頁面
現(xiàn)在有些做產(chǎn)品的或者做設(shè)計的這些不太懂程序的人會把靜態(tài)和動態(tài)頁面搞混掉贬芥,有很多人認為,只要是網(wǎng)頁會動它就是動態(tài)頁面宣决,比如一個輪播圖在那邊滑來滑去會動蘸劈,那就是動態(tài)網(wǎng)頁,其他那最多算一個動畫效果尊沸。
- 靜態(tài)頁面
沒有后臺威沫。寫完HTML什么樣子。用戶看到就是什么樣子洼专。 - 動態(tài)頁面:
有后臺 需要先經(jīng)過服務(wù)器處理,然后發(fā)送給用戶.
PHP表單
為了實現(xiàn)動態(tài)頁面棒掠,我們就需要一些表單提交,從后臺獲得一些數(shù)據(jù)改變我們的頁面屁商。
- PHP_GET 數(shù)據(jù)獲取
:在PHP中,如果想要獲取通過get方法提交的數(shù)據(jù),可以通過$_GET對象來獲取(但是參數(shù)在地址欄中可以查看)
//下面就是一個簡單的表單代碼,將數(shù)據(jù)提交到01.php,使用get的方式
<form action="01.php" method="get" >
<label for="">姓名:
<input type="text" name= "userName"></label>
<br/>
<label for="">郵箱:
<input type="text" name= "userEmail"></label>
<br/>
<input type="submit" name="">
</form>
<?php
echo 'userName:'.$_GET['userName'];
echo '<br/>';
echo 'userEmail:'.$_GET['userEmail'];
//以上代碼會返回對應(yīng)表單name中輸入的內(nèi)容
?>
- PHP_POST數(shù)據(jù)獲取
:在PHP中,如果想要獲取通過post方法提交的數(shù)據(jù),可以通過$_POST對象來獲取
//下面就是一個簡單的表單代碼,將數(shù)據(jù)提交到02.php,使用post的方式
//(注意:代碼中的method改為post)
<form action="02.php" method="post" >
<label for="">姓名:
<input type="text" name= "userName"></label>
<br/>
<label for="">郵箱:
<input type="text" name= "userEmail"></label>
<br/>
<input type="submit" name=""></form>
<?php
echo 'userName:'.$_POST['userName'];
echo '<br/>';
echo 'userEmail:'.$_POST['userEmail'];
//以上代碼會返回對應(yīng)表單name中輸入的內(nèi)容
?>
AJAX
介紹完P(guān)HP的一些內(nèi)容烟很,看起來似乎都很零散,但是結(jié)合接下來學(xué)習(xí)的Ajax就會有一個系統(tǒng)的認識了。
單詞解釋:
Asynchronous Javascript And XML(異步JavaScript和XML),他并不是憑空出現(xiàn)的新技術(shù),而是對于現(xiàn)有技術(shù)的結(jié)合:核心是js對象XMLHttpRequest
XMLHttpRequest
ajax使用的依舊是HTTP請求,那么一個完整的HTTP請求需要什么
- 請求的網(wǎng)址,方法get/post
- 提交請求內(nèi)容數(shù)據(jù),請求主體等
- 接收響應(yīng)回來的內(nèi)容
- 五步使用法
建立XMLHTTPRequest對象
-
注冊回調(diào)函數(shù)
- 當(dāng)服務(wù)器回應(yīng)我們了雾袱,我們想要執(zhí)行什么邏輯
-
使用open方法
- 設(shè)置和服務(wù)器端交互的基本信息
- 設(shè)置提交的網(wǎng)址恤筛,數(shù)據(jù),post提交的一些額外內(nèi)容
-
設(shè)置發(fā)送的數(shù)據(jù)芹橡,開始和服務(wù)器端交互
- 發(fā)送數(shù)據(jù)
-
更新界面
- 在注冊的回調(diào)函數(shù)中,獲取返回的數(shù)據(jù),更新界面
示例代碼:GET
<script type="text/javascript">
// 創(chuàng)建XMLHttpRequest 對象
var xml = new XMLHttpRequest();
// 設(shè)置跟服務(wù)端交互的信息
xml.open('get','01.ajax.php?name=fox'); //get的數(shù)據(jù),直接在請求的url中添加即可
xml.send(null); // get請求這里寫null即可
// 接收服務(wù)器反饋
xhr.onreadystatechange = function () {
// 這步為判斷服務(wù)器是否正確響應(yīng)
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xml.responseText); // 打印響應(yīng)內(nèi)容 }
};
</script>
示例代碼:POST
<script type="text/javascript">
// 異步對象
var xhr = new XMLHttpRequest();
// 設(shè)置屬性
xhr.open('post', '02.post.php' );
// 如果想要使用post提交數(shù)據(jù),必須添加
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
// 將數(shù)據(jù)通過send方法傳遞
xhr.send('name=fox&age=18');
// 發(fā)送并接受返回值
xhr.onreadystatechange = function () {
// 這步為判斷服務(wù)器是否正確響應(yīng)
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText); }
};
</script>
考慮兼容性創(chuàng)建Ajax對象
var request ;
if(XMLHttpRequest){
// 新式瀏覽器寫法
request = new XMLHttpRequest();
}else{
//IE5,IE6寫法
new ActiveXObject("Microsoft.XMLHTTP");
}
Ajax注意事項
-
POST請求注意點
如果想要像form表單提交數(shù)據(jù)那樣使用POST請求,需要使用XMLHttpRequest對象的setRequestHeader()方法 來添加 HTTP 頭。然后在 send() 方法中添加想要發(fā)送的數(shù)據(jù):
xmlhttp.open("POST","ajax_test.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Bill&lname=Gates");
- onreadystatechange
每當(dāng)readyState改變時林说,就會調(diào)用該函數(shù)粘驰。
readyState
存有 XMLHttpRequest 的狀態(tài)
從 0 到 4 發(fā)生變化。
0: 請求未初始化
1: 服務(wù)器連接已建立
2: 請求已接收
3: 請求處理中
4: 請求已完成述么,且響應(yīng)已就緒status
200: "OK"
404: 未找到頁面
所以得當(dāng)ready為4蝌数,status=200時,才表示找到頁面度秘,并且已經(jīng)讀取完畢時顶伞,調(diào)用onreadystatechange函數(shù)來執(zhí)行我們想要的邏輯。-
服務(wù)器響應(yīng)內(nèi)容
- 如果響應(yīng)的是普通字符串,使用responseText
- 如果響應(yīng)的是XML,使用responseXML