ajax實踐

1, ajax 是什么沧踏?有什么作用?

ajax(Asynchronous JavaScript and XML)以異步的方式從服務(wù)器獲取數(shù)據(jù)巾钉,不必刷新頁面也能獲取新數(shù)據(jù)翘狱。ajax的核心對象就是XMLhttpRequest,通過JavaScript DOM將ajax獲得的數(shù)據(jù)顯示在頁面上砰苍。

作用是帶來更好的用戶體驗潦匈。

2, 前后端開發(fā)聯(lián)調(diào)需要注意哪些事情赚导?后端接口完成前如何 mock 數(shù)據(jù)茬缩?

前后端開發(fā)時需要注意:

  1. 約定接口類型(GET還是POST)、接口(傳遞到那個路由)
  2. 前端傳遞給后端的參數(shù)(參數(shù)的類型吼旧、格式)
  3. 后端返回數(shù)據(jù)的格式(是數(shù)組還是字符串還是JSON格式)

后端接口完成前可以使用server-mock搭建模擬服務(wù)器

3寒屯,點擊按鈕,使用 ajax 獲取數(shù)據(jù)黍少,如何在數(shù)據(jù)到來之前防止重復(fù)點擊?

設(shè)置判斷變量,數(shù)據(jù)沒拿到時設(shè)置為false处面,拿到數(shù)據(jù)才設(shè)置為true厂置,為false時忽略后面的點擊事件

本例中的isDataArrive即為判斷數(shù)據(jù)是否拿到的變量

<script>
    //整體思路就是給按鈕添加點擊事件,寫ajax得到數(shù)據(jù)魂角,然后通過渲染添加到html上就可以了
    var btn = document.querySelector('#load-more');
    var ct = document.querySelector('#ct');
    var tempIndex = 3;//記錄每次的變量

//    針對網(wǎng)速較慢并且重復(fù)點擊的情況做得優(yōu)化:第一種思路昵济,如果一點時間內(nèi)請求沒到,忽略用戶后面點擊的野揪。第二種思路访忿,用戶點擊了多次,每次的輸出內(nèi)容都要顯示
    var isDataArrive = true; // 設(shè)置判斷變量斯稳,數(shù)據(jù)沒拿到時設(shè)置為false


    btn.addEventListener('click',function () {

        if (!isDataArrive) {
            return; //如果數(shù)據(jù)沒拿到海铆,直接return掉,后面的點擊就被忽略掉
        }

        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4 && (xhr.status == 200 || xhr.status == 304)) {
                var content = JSON.parse(xhr.responseText);
//                console.log(content); //寫到這先測試一下給的數(shù)據(jù)對不對
//                開始拼裝html
//                var html = '';
//                for (var i = 0; i < content.length; i ++) {
//                    html += '<li>' + content[i] + '</li>';
//                }
//               拼裝好html挣惰,應(yīng)該是appendChild到ct后面卧斟,但是每次appendChild回影響性能殴边,可以使用Fragment,所以可以改寫為:
                var fragment = document.createDocumentFragment();
                for (var i = 0; i < content.length; i ++) {
                    var node = document.createElement('li');
                    node.innerText = content[i]; // 使用innerText不用innerHTML還有個好處是可以防止xss注入
                    fragment.appendChild(node);
                }
                ct.appendChild(fragment);
                tempIndex += 5;

                isDataArrive = true;//readyState === 4 表示數(shù)據(jù)已經(jīng)拿到了
            }
        };
        xhr.open('get','/loadMore?index='+ tempIndex +'&length=5',true);
//       前端需要得到一個數(shù)組 ['content1','content2',...,'content5']
//       前端需要向后端發(fā)送的  /loadMore?index=3&length=5                  /loadMore為接口珍语,后端對loadMore進(jìn)行處理
//        {
//            index: 3,
//            length: 5,
//         }
/*          一般在請求數(shù)據(jù)之前都要想清楚前端需要得到什么數(shù)據(jù)锤岸,需要向后端發(fā)送的是什么接口,參數(shù)是怎么樣的板乙。
            1.GET
            2./loadMore
            3. {
                index: 3,
                length: 5,
            }
            4. ['content1','content2',...,'content5']
 */
        xhr.send();
        isDataArrive = false; // 沒拿到數(shù)據(jù)設(shè)置為false
    })
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末是偷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子募逞,更是在濱河造成了極大的恐慌概行,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件微猖,死亡現(xiàn)場離奇詭異秒紧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)透乾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門洪燥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人乳乌,你說我怎么就攤上這事捧韵。” “怎么了汉操?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵再来,是天一觀的道長。 經(jīng)常有香客問我磷瘤,道長芒篷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任采缚,我火速辦了婚禮针炉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扳抽。我一直安慰自己篡帕,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布贸呢。 她就那樣靜靜地躺著镰烧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪楞陷。 梳的紋絲不亂的頭發(fā)上怔鳖,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音猜谚,去河邊找鬼败砂。 笑死赌渣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的昌犹。 我是一名探鬼主播坚芜,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼斜姥!你這毒婦竟也來了鸿竖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤铸敏,失蹤者是張志新(化名)和其女友劉穎缚忧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杈笔,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡闪水,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蒙具。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片球榆。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖禁筏,靈堂內(nèi)的尸體忽然破棺而出持钉,到底是詐尸還是另有隱情,我是刑警寧澤篱昔,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布每强,位于F島的核電站,受9級特大地震影響州刽,放射性物質(zhì)發(fā)生泄漏空执。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一穗椅、第九天 我趴在偏房一處隱蔽的房頂上張望脆烟。 院中可真熱鬧,春花似錦房待、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至框冀,卻和暖如春流椒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背明也。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工宣虾, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留惯裕,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓绣硝,卻偏偏與公主長得像蜻势,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鹉胖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

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

  • ajax 是什么握玛?有什么作用? AJAX的全稱是Asynchronous JavaScript and XML(異...
    cross_王閱讀 334評論 0 0
  • 1.ajax 是什么甫菠?有什么作用挠铲? Asynchronous JavaScript and XML(異步的 Jav...
    clark124閱讀 241評論 0 0
  • 題目1: ajax 是什么?有什么作用寂诱? ajax全稱Asynchronous Javascript And XM...
    漂于行閱讀 391評論 0 1
  • ajax 是什么拂苹?有什么作用? AJAX = 異步 JavaScript 和 XML痰洒。AJAX 是一種用于創(chuàng)建快速...
    Vincent_永閱讀 166評論 0 0
  • 有人說带迟,我寫短文比長文好一點音羞。嗯,我思考過這個問題仓犬。 腦子里的想法嗅绰、創(chuàng)意滿天飛,但具體表達(dá)和執(zhí)行的時候搀继,困難重重窘面。...
    莫玄斐隱閱讀 371評論 0 1