學(xué)習(xí)Ajax獲得的知識點

首先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請求需要什么

  1. 請求的網(wǎng)址,方法get/post
  2. 提交請求內(nèi)容數(shù)據(jù),請求主體等
  3. 接收響應(yīng)回來的內(nèi)容
  • 五步使用法
    1. 建立XMLHTTPRequest對象

    2. 注冊回調(diào)函數(shù)

      • 當(dāng)服務(wù)器回應(yīng)我們了雾袱,我們想要執(zhí)行什么邏輯
    3. 使用open方法

      • 設(shè)置和服務(wù)器端交互的基本信息
      • 設(shè)置提交的網(wǎng)址恤筛,數(shù)據(jù),post提交的一些額外內(nèi)容
    4. 設(shè)置發(fā)送的數(shù)據(jù)芹橡,開始和服務(wù)器端交互

      • 發(fā)送數(shù)據(jù)
    5. 更新界面

      • 在注冊的回調(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");
  1. 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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剑梳,一起剝皮案震驚了整個濱河市唆貌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垢乙,老刑警劉巖锨咙,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異追逮,居然都是意外死亡酪刀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門钮孵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骂倘,“玉大人,你說我怎么就攤上這事巴席±裕” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵漾唉,是天一觀的道長荧库。 經(jīng)常有香客問我,道長赵刑,這世上最難降的妖魔是什么分衫? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮料睛,結(jié)果婚禮上丐箩,老公的妹妹穿的比我還像新娘。我一直安慰自己恤煞,他們只是感情好屎勘,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著居扒,像睡著了一般概漱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喜喂,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天瓤摧,我揣著相機與錄音,去河邊找鬼玉吁。 笑死照弥,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的进副。 我是一名探鬼主播这揣,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼影斑!你這毒婦竟也來了给赞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤矫户,失蹤者是張志新(化名)和其女友劉穎片迅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體皆辽,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡柑蛇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了驱闷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唯蝶。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖遗嗽,靈堂內(nèi)的尸體忽然破棺而出粘我,到底是詐尸還是另有隱情,我是刑警寧澤痹换,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布征字,位于F島的核電站,受9級特大地震影響娇豫,放射性物質(zhì)發(fā)生泄漏匙姜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一冯痢、第九天 我趴在偏房一處隱蔽的房頂上張望氮昧。 院中可真熱鬧框杜,春花似錦、人聲如沸袖肥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椎组。三九已至油狂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寸癌,已是汗流浹背专筷。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蒸苇,地道東北人磷蛹。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像溪烤,于是被迫代替她去往敵國和親弦聂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容