web前端數(shù)據(jù)交互ajax

什么是ajax瑞信?它的應用場景是什么?它的運行原理是什么美旧?
ajax是瀏覽器提供的一套方法渤滞,可以實現(xiàn)頁面無刷新更新數(shù)據(jù),提高用戶瀏覽網(wǎng)站應用的體驗榴嗅。

Ajax 應用場景

  1. 頁面上拉加載更多數(shù)據(jù)
  2. 列表數(shù)據(jù)無刷新分頁
  3. 表單項離開焦點數(shù)據(jù)驗證
  4. 搜索框提示文字下拉列表

Ajax的運行原理相當于瀏覽器發(fā)送請求與接收響應的代理人妄呕,以實現(xiàn)在不影響用戶瀏覽頁面的情況下,局部更新頁面數(shù)據(jù)嗽测,從而提高用戶體驗绪励。

使用原生js寫出一個簡單的ajax請求

    //第一步:創(chuàng)建ajax對象
    var xhr = new XMLHttpRequest();
    //第二步:告訴ajax對象要向哪發(fā)送請求,以什么方式發(fā)送
    xhr.open('get','http://127.0.0.1:3000/first');
    //第三步:發(fā)送請求
    xhr.send();
    //第四步:獲取服務器端響應到客戶端
    xhr.onload = function(){
        console.log(xhr.responseText);
    }

使用jquery寫出一個簡單的ajax請求

$.ajax({
        url:'/api',
        type:'post',
        data:{},
        dataType:'json',
        success:function(res){
            console.log(res);
        }
    })

服務端響應的數(shù)據(jù)格式

在真實的項目中唠粥,服務器端大多數(shù)情況下會以 JSON對象作為響應數(shù)據(jù)的格式疏魏。當客戶端拿到響應數(shù)據(jù)時,要將 JSON 數(shù)據(jù)和 HTML 字符串進行拼接晤愧,然后將拼接的結果展示在頁面中大莫。

在 http 請求與響應的過程中,無論是請求參數(shù)還是響應內容官份,如果是對象類型只厘,最終都會被轉換為對象字符串進行傳輸。

JSON.parse() // 將 json 字符串轉換為json對象

常見的http狀態(tài)碼都有哪些舅巷?
100=>正在初始化(一般是看不到的)
101=>正在切換協(xié)議
200或者以2開頭的兩位數(shù)=>都是代表響應主體的內容已經(jīng)成功返回了
202=>表示接受
301=>永久重定向/永久轉移
302=>臨時重定向/臨時轉移(一般用來做服務器負載均衡)
304=>本次獲取的內容是讀取緩存中的數(shù)據(jù)羔味,會每次去服務器校驗
400=>參數(shù)出現(xiàn)錯誤
401=>未認證,沒有登陸網(wǎng)站
403=>禁止訪問钠右,沒有權限
404=>客戶端訪問的地址不存在
500=>未知的服務器錯誤
503=>服務器超負荷

http請求方式有幾種介评?
get 請求指定的頁面信息,并返回實體主體爬舰。
head 類似get請求们陆,只不過返回的響應中沒有具體的內容,用于獲取報頭

請盡可能詳盡的解釋ajax的工作原理
第一步:創(chuàng)建一部對象var xhr = new XMLHttpRequest()情屹;
第二步:設置請求行xhr.open('請求方式','請求地址')坪仇;
第三步:發(fā)送請求Get方式xhr.send(null),
如果是post請求還要設置請求頭

xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhr.send("name=zs&age=18");
    // 監(jiān)聽服務端的響應
    xhr.onreadystatechange=function(){
        if(xhr.status==200&&xhr.readyState==4){
            //獲取json
            var json = xhr.responseText&&JSON.parse(xhr.responseText)
            //獲取xml
            var xml = xhr.responseXML;
            console.log(json,xml)
        }
    }

頁面編碼和被請求的資源編碼如果不一致如何處理?
a.html的編碼是gbk或者gb2312的垃你,而引入的js編碼為utf-8的椅文,那就需要在引入的時候

<script src="http://www.xxx.com/test.js" charset="utf-8"></script>

同理,如果你的頁面是utf-8的惜颇,引入js是gbk的皆刺,那么就需要加上charset="gbk".

如何解決跨域問題?
jsonp凌摄,服務器代理羡蛾,cors

jsonp的跨域原理是什么?
動態(tài)在頁面中創(chuàng)建一個script標簽锨亏,使其src屬性指向后端數(shù)據(jù)接口痴怨,后端數(shù)據(jù)接口必須返回一個js函數(shù)的調用字符串(如cb('{"name":"zs","age":"18"}'))忙干,將要返回給前端的json數(shù)據(jù)作為函數(shù)的實參,當script標簽加載完畢后會在瀏覽器中執(zhí)行后端返回的函數(shù)調用浪藻,所以可以在函數(shù)內部拿到服務端調用的時候傳入的實參捐迫,所以就間接實現(xiàn)了跨域請求數(shù)據(jù)。

什么是同步和異步爱葵?哪種執(zhí)行方式更好施戴?
同步是指一個程序執(zhí)行完了接著執(zhí)行另外一個程序,異步是指多個程序同步進行萌丈,所以異步效率更高暇韧,因為異步不會出現(xiàn)阻塞現(xiàn)象,前一個程序的執(zhí)行不會影響后一個程序的執(zhí)行浓瞪。

get和post的區(qū)別,何時使用post巧婶?
get是將要傳遞的參數(shù)拼在url中進行傳遞乾颁,傳遞數(shù)據(jù)量少,不安全艺栈;
post是將傳遞的參數(shù)放在請求體里傳遞英岭,攜帶數(shù)據(jù)量大,相對安全湿右,要提交一些敏感數(shù)據(jù)(比如登陸密碼)诅妹,上傳文件時,必須使用post請求毅人。

請解釋下javascript的同源策略吭狡?
同源策略是瀏覽器的一項安全策略,瀏覽器只允許js代碼請求和當前所在服務器域名丈莺,端口划煮,協(xié)議相同的數(shù)據(jù)接口上的數(shù)據(jù),這就是同源策略缔俄。

一個頁面從輸入url到頁面加載顯示完成弛秋,這個過程中都發(fā)生了什么?
首先根據(jù)域名查詢DNS服務器獲取服務器IP俐载,然后拿著服務器IP和域名請求對應的服務器蟹略,請求成功后web服務器會根據(jù)一系列運算,將客戶端需要的數(shù)據(jù)通過網(wǎng)絡傳輸?shù)娇蛻舳藶g覽器遏佣,最終由瀏覽器解析后呈現(xiàn)給終端用戶挖炬。

網(wǎng)站從http協(xié)議切換到https協(xié)議需要對代碼做哪些處理?
不需要對代碼做任何處理状婶,只需要在web服務器中加入一個ssl的安全認證模塊即可茅茂。

什么是RESTful API捏萍?
RESTful的核心思想是,客戶端發(fā)出的數(shù)據(jù)操作指令都是“動詞+賓語”的結構空闲,比如GET/articles這個命令令杈,GET是動詞,/articles是賓語碴倾。
補充說明:
動詞通常就是五種HTTP方法逗噩,對應CRUD操作:
GET:讀取 Read
POST:新建 Create
PUT:更新 Update
PATCH:更新 Update,通常是部分更新
DELETE:刪除 Delete

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末跌榔,一起剝皮案震驚了整個濱河市异雁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌僧须,老刑警劉巖纲刀,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異担平,居然都是意外死亡示绊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門暂论,熙熙樓的掌柜王于貴愁眉苦臉地迎上來面褐,“玉大人,你說我怎么就攤上這事取胎≌箍蓿” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我泉孩,道長大州,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮映挂,結果婚禮上盗尸,老公的妹妹穿的比我還像新娘柑船。我一直安慰自己,他們只是感情好泼各,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布鞍时。 她就那樣靜靜地躺著,像睡著了一般逆巍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锐极,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天笙僚,我揣著相機與錄音,去河邊找鬼灵再。 笑死肋层,一個胖子當著我的面吹牛翎迁,可吹牛的內容都是我干的栋猖。 我是一名探鬼主播汪榔,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雌团!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤柿菩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后懦胞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡躏尉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年后众,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蒂誉。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡右锨,死狀恐怖括堤,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情讥电,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布恩敌,位于F島的核電站,受9級特大地震影響鸦致,放射性物質發(fā)生泄漏。R本人自食惡果不足惜分唾,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一绽乔、第九天 我趴在偏房一處隱蔽的房頂上張望弧蝇。 院中可真熱鬧折砸,春花似錦、人聲如沸睦授。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽删顶。三九已至竖螃,卻和暖如春逗余,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背录粱。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留荒叶,地道東北人输虱。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蚕钦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容

  • ??2005 年,Jesse James Garrett 發(fā)表了一篇在線文章菠齿,題為“Ajax: A new App...
    霜天曉閱讀 885評論 0 1
  • 1、XMLHttpRequest 對象 在瀏覽器中創(chuàng)建XHR 對象 1.1 XHR 的用法 在使用XHR 對象時芋忿,...
    shanruopeng閱讀 581評論 0 1
  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,179評論 0 7
  • Ajax概述: Ajax(Asynchronous JavaScript And Xml),異步的JavaScri...
    南山伐木閱讀 324評論 1 3
  • ajax作為前端開發(fā)必需的基礎能力之一戈钢,你可能會使用它是尔,但并不一定懂得其原理殉了,以及更深入的服務器通信相關的知識拟枚。在...
    蕭玄辭閱讀 816評論 0 0