javascript 和 jQuery 的Ajax 用法

ajax技術(shù)的核心是XMLHttpRequest對象(簡稱XHR)

ajax通過原生的XMLHttpRequest對象發(fā)出HTTP請求,得到服務(wù)器返回的數(shù)據(jù)后镣典,再進(jìn)行處理。

面試必須寫的
原生javascript Ajax:
ajax包括幾個步驟:

1:創(chuàng)建ajax請求

2:發(fā)出http請求

3:收到服務(wù)器傳回的消息

4:更新網(wǎng)頁數(shù)據(jù)

xhr.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="show"></div>
        <ul>
        </ul>
    </body>
    <script type="text/javascript">
        var ul = document.getElementsByTagName('ul')[0];
        //創(chuàng)建一個xhr對象
        var xhr = new XMLHttpRequest();
        
        //請求過程中唾琼,readyState會發(fā)生變化
        // 0 - 是初始狀態(tài)
        // 1 - 是開始創(chuàng)建連接
        // 2 - 客戶端向服務(wù)端發(fā)送數(shù)據(jù)
        // 3 - 服務(wù)端開始向客戶端返回數(shù)據(jù)
        // 4 - 客戶端接收數(shù)據(jù)完畢
        xhr.onreadystatechange = function(){
            console.log(this.readyState);//1,2,3,4      
        }
        xhr.onload = function(){
            //在數(shù)據(jù)加載完畢后執(zhí)行onload
    //      if(this.readyState == 4){
    //          console.log("ok");
    //      }
    //      這是PHP文件傳過來的json字符串 this.responseText兄春,需要轉(zhuǎn)為數(shù)組
    //      1.可以用json.parse
    //      2.可以用eval
    //      如果 jsondata.php 中的數(shù)據(jù)沒有嚴(yán)格遵守JSON  格式,不能使用JSON和eval
    //      console.log(this.responseText);
    //      console.log(JSON.parse(this.responseText));
    //      console.log(eval("("+this.responseText+")"));
    //      注釋掉json格式的數(shù)據(jù)父叙,可以輸出任意文本
            document.getElementById("show").innerHTML = this.responseText;
            var a = JSON.parse(this.responseText);
            for(var i=0; i<a.length; i++){
                var lis = document.createElement('li');
                lis.innerHTML = a[i].title;
                ul.appendChild(lis);
            }
        }   
        //open方法
        //true 異步 false 同步(卡)
        xhr.open("GET","xhr.php?action=1&data=abc",true);//創(chuàng)建一個連接
        xhr.send(null);
    </script>
</html>

xhr.php

<?php
    //后臺輸出json
    //newsL是新聞數(shù)據(jù)神郊,可能是來自文件存儲的數(shù)據(jù)肴裙,也可能是來自數(shù)據(jù)庫
    //sleep(10);//延遲10s執(zhí)行
    
//  if($_POST['title']){
//      echo $_POST['title'];
//      echo "<br>";
//      echo $_POST['data'];
//      exit;
//  }

    $newsList = array();
    $newsList[0] = array("title" => "新聞1");
    $newsList[1] = array("title" => "新聞2");
    $newsList[2] = array("title" => "新聞3");
    //將數(shù)組變成json串
    //json_encode是json串的編碼函數(shù)趾唱,傳入一個數(shù)組類型的參數(shù)
    $jsonstr = json_encode($newsList);
//  echo "createList(".$jsonstr.")";
//  echo $_GET['callback']."(".$jsonstr.")";
//  echo "-----------";//不是json格式,會報錯
    echo $jsonstr;//輸出的字符串必須是嚴(yán)格遵守json格式的蜻懦,才可以使用  JSON.parse();
//  echo "----------";
?>

jquery Ajax 是對XMLHTTPRequestrian對象的封裝

        基本方法就是ajax();
        dataType:將字符串類型轉(zhuǎn)換為json串
        參數(shù)是一組對象
            $.ajax({
                type:"get",
                url:"../彈幕/getdanmu.php",
                data:{},
                type:"post",//數(shù)據(jù)提交類型
                url:"../彈幕/danmu.php",//請求地址
                data:{word:"abc",username:"hzx"},//發(fā)送數(shù)據(jù)
                dataType:"json",//返回數(shù)據(jù)的類型
                async:true,//是否為異步 甜癞,true 異步
                success為數(shù)據(jù)加載完成后的回調(diào)函數(shù)
                success:function(data1){
                    console.log(data1);
                    var show = document.getElementById('show');
                    for(i in data1){
                        show.innerHTML += data1[i]+"<br>";
                    }
                }
            });

get方法獲取后臺數(shù)據(jù)

$.get("getdanmu.php",{word:"abc"},function(data,status){
    console.log(data,status);
},"json")

post方法獲取后臺數(shù)據(jù)

$.post("danmu.php",{word:"abc"},function(data,status){
    console.log(data,status);
})

load方法引入界面

在需要彈幕頁面的HTML中加入以下代碼就可以插入鏈接的頁面

$("#show").load("../web.html");//留言導(dǎo)航頁

$("#show").load("danmu.html");

我的博客鏈接

更多資源就在我的gitHubhttps://github.com/huzixian2017/huzixian2017.github.io

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市宛乃,隨后出現(xiàn)的幾起案子悠咱,更是在濱河造成了極大的恐慌蒸辆,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件析既,死亡現(xiàn)場離奇詭異躬贡,居然都是意外死亡,警方通過查閱死者的電腦和手機眼坏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門拂玻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宰译,你說我怎么就攤上這事檐蚜。” “怎么了沿侈?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵闯第,是天一觀的道長。 經(jīng)常有香客問我缀拭,道長咳短,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任蛛淋,我火速辦了婚禮诲泌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘铣鹏。我一直安慰自己敷扫,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布诚卸。 她就那樣靜靜地躺著葵第,像睡著了一般。 火紅的嫁衣襯著肌膚如雪合溺。 梳的紋絲不亂的頭發(fā)上卒密,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音棠赛,去河邊找鬼哮奇。 笑死,一個胖子當(dāng)著我的面吹牛睛约,可吹牛的內(nèi)容都是我干的鼎俘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼辩涝,長吁一口氣:“原來是場噩夢啊……” “哼贸伐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起怔揩,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤捉邢,失蹤者是張志新(化名)和其女友劉穎脯丝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伏伐,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡宠进,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了藐翎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砰苍。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖阱高,靈堂內(nèi)的尸體忽然破棺而出赚导,到底是詐尸還是另有隱情,我是刑警寧澤赤惊,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布吼旧,位于F島的核電站,受9級特大地震影響未舟,放射性物質(zhì)發(fā)生泄漏圈暗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一裕膀、第九天 我趴在偏房一處隱蔽的房頂上張望员串。 院中可真熱鬧,春花似錦昼扛、人聲如沸寸齐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渺鹦。三九已至,卻和暖如春蛹含,著一層夾襖步出監(jiān)牢的瞬間毅厚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工浦箱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吸耿,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓酷窥,卻偏偏與公主長得像咽安,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子竖幔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

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