首先PHP頁面和HTML頁面可以長得一模一樣,唯一的區(qū)別就是必須放在服務(wù)器的文件夾底下。
php常用語法介紹
- php標(biāo)簽
<?php
這個(gè)一般叫作服務(wù)器端標(biāo)記
?>
正如JS需要放到script標(biāo)簽里面,php代碼也需要放到php標(biāo)記里面。這里面的內(nèi)容都會(huì)被服務(wù)器解析為服務(wù)端代碼。
<?php
echo //這里的echo跟js中的alert有些類似,可以輸出只不過alert會(huì)彈一個(gè)框出來
?>
- 內(nèi)容輸出
- Php中的echo會(huì)把內(nèi)容輸出到html代碼里面
<?php
echo ‘a(chǎn)aa’;//就會(huì)在頁面輸出aaa,,并且看不到php標(biāo)記。只能看到結(jié)果中的內(nèi)容。
?>
- echo 'string';
單引號(hào)的內(nèi)容會(huì)被解析成字符串 - echo "$"
雙引號(hào)中如果是字符串,則與單引號(hào)沒差別;
如果是變量,則會(huì)輸出變量的值; - print_r():函數(shù)輸出復(fù)雜數(shù)據(jù)類型,比如數(shù)組,對(duì)象
- var_dump():函數(shù)輸出詳細(xì)信息,如對(duì)象、數(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不同之處在于它聲明變量之前必須加$符號(hào).
$是php中變量的標(biāo)志 - $符號(hào)開頭,其后是變量的名稱
- 變量名稱必須以字母或下劃線開頭,不能以數(shù)字開頭
- 變量名稱只能包含字母數(shù)字字符和下劃線(A-z、0-9 以及_)
- 變量名稱對(duì)大小寫敏感
- Php中的變量不需要定義就可以直接使用
<?php
$a= 12;
echo $a; //12;
?>
如果變量不帶$直接echo ,會(huì)自動(dòng)解析成字符串。
換句話說,php里面可以不加單引號(hào)直接加字符串。(但是不推薦這么寫)
<?php
echo abc; //abc;
?>
字符串拼接
Php中的字符串拼接:需要用到 “.” 而JS是用 “+”
當(dāng)時(shí)產(chǎn)生了疑問,那么JS中的 “.”php需要用什么符號(hào)? 這里就需要用“->”函數(shù):
PHP雖然系統(tǒng)內(nèi)建了一些函數(shù),但是這不影響我們定義自己的函數(shù),函數(shù)的作用就是在代碼中可以重復(fù)使用的語法塊頁面加載的時(shí)候不會(huì)執(zhí)行只有在被調(diào)用的時(shí)候才會(huì)執(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ù)有默認(rèn)值的函數(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; //對(duì)象屬性取值,并保存在$name中
$fox->name = '小狐貍'; //對(duì)象屬性賦值,對(duì)象name屬性賦值為‘小狐貍’
- 帶構(gòu)造函數(shù)的對(duì)象
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ù)初始化對(duì)象
$fox = new fox('小狐貍
');
//調(diào)用對(duì)象方法,獲取對(duì)象名
$foxName = $fox->Name(); //小狐貍
- header()函數(shù)
//用來向客戶端(瀏覽器)發(fā)送報(bào)頭,如果出現(xiàn)中文無法顯示,可以在PH代碼頂部添加如下代碼
header("content-type:text/html; charset=utf-8");
靜態(tài)頁面和動(dòng)態(tài)頁面
現(xiàn)在有些做產(chǎn)品的或者做設(shè)計(jì)的這些不太懂程序的人會(huì)把靜態(tài)和動(dòng)態(tài)頁面搞混掉,有很多人認(rèn)為,只要是網(wǎng)頁會(huì)動(dòng)它就是動(dòng)態(tài)頁面,比如一個(gè)輪播圖在那邊滑來滑去會(huì)動(dòng),那就是動(dòng)態(tài)網(wǎng)頁,其他那最多算一個(gè)動(dòng)畫效果。
- 靜態(tài)頁面
沒有后臺(tái)。寫完HTML什么樣子。用戶看到就是什么樣子。 - 動(dòng)態(tài)頁面:
有后臺(tái) 需要先經(jīng)過服務(wù)器處理,然后發(fā)送給用戶.
PHP表單
為了實(shí)現(xiàn)動(dòng)態(tài)頁面,我們就需要一些表單提交,從后臺(tái)獲得一些數(shù)據(jù)改變我們的頁面。
- PHP_GET 數(shù)據(jù)獲取
:在PHP中,如果想要獲取通過get方法提交的數(shù)據(jù),可以通過$_GET對(duì)象來獲取(但是參數(shù)在地址欄中可以查看)
//下面就是一個(gè)簡單的表單代碼,將數(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'];
//以上代碼會(huì)返回對(duì)應(yīng)表單name中輸入的內(nèi)容
?>
- PHP_POST數(shù)據(jù)獲取
:在PHP中,如果想要獲取通過post方法提交的數(shù)據(jù),可以通過$_POST對(duì)象來獲取
//下面就是一個(gè)簡單的表單代碼,將數(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'];
//以上代碼會(huì)返回對(duì)應(yīng)表單name中輸入的內(nèi)容
?>
AJAX
介紹完P(guān)HP的一些內(nèi)容,看起來似乎都很零散,但是結(jié)合接下來學(xué)習(xí)的Ajax就會(huì)有一個(gè)系統(tǒng)的認(rèn)識(shí)了。
單詞解釋:
Asynchronous Javascript And XML(異步JavaScript和XML),他并不是憑空出現(xiàn)的新技術(shù),而是對(duì)于現(xiàn)有技術(shù)的結(jié)合:核心是js對(duì)象XMLHttpRequest
XMLHttpRequest
ajax使用的依舊是HTTP請(qǐng)求,那么一個(gè)完整的HTTP請(qǐng)求需要什么
- 請(qǐng)求的網(wǎng)址,方法get/post
- 提交請(qǐng)求內(nèi)容數(shù)據(jù),請(qǐng)求主體等
- 接收響應(yīng)回來的內(nèi)容
- 五步使用法
建立XMLHTTPRequest對(duì)象
-
注冊(cè)回調(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ù)
-
更新界面
- 在注冊(cè)的回調(diào)函數(shù)中,獲取返回的數(shù)據(jù),更新界面
示例代碼:GET
<script type="text/javascript">
// 創(chuàng)建XMLHttpRequest 對(duì)象
var xml = new XMLHttpRequest();
// 設(shè)置跟服務(wù)端交互的信息
xml.open('get','01.ajax.php?name=fox'); //get的數(shù)據(jù),直接在請(qǐng)求的url中添加即可
xml.send(null); // get請(qǐng)求這里寫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">
// 異步對(duì)象
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對(duì)象
var request ;
if(XMLHttpRequest){
// 新式瀏覽器寫法
request = new XMLHttpRequest();
}else{
//IE5,IE6寫法
new ActiveXObject("Microsoft.XMLHTTP");
}
Ajax注意事項(xiàng)
-
POST請(qǐng)求注意點(diǎn)
如果想要像form表單提交數(shù)據(jù)那樣使用POST請(qǐng)求,需要使用XMLHttpRequest對(duì)象的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改變時(shí),就會(huì)調(diào)用該函數(shù)。
readyState
存有 XMLHttpRequest 的狀態(tài)
從 0 到 4 發(fā)生變化。
0: 請(qǐng)求未初始化
1: 服務(wù)器連接已建立
2: 請(qǐng)求已接收
3: 請(qǐng)求處理中
4: 請(qǐng)求已完成,且響應(yīng)已就緒status
200: "OK"
404: 未找到頁面
所以得當(dāng)ready為4,status=200時(shí),才表示找到頁面,并且已經(jīng)讀取完畢時(shí),調(diào)用onreadystatechange函數(shù)來執(zhí)行我們想要的邏輯。-
服務(wù)器響應(yīng)內(nèi)容
- 如果響應(yīng)的是普通字符串,使用responseText
- 如果響應(yīng)的是XML,使用responseXML