【本週面試題】第1周 - 獲取URL中的查詢字符串參數、get和post的區別

【此係列優先解決本身經歷的面試題】javascript

2018.11.16 面試題一:你如何獲取瀏覽器URL中查詢字符串中的參數?

題目代碼:

  測試地址爲html

1 https://www.sogou.com/tx?query=javascript&ie=utf8&_ast=1542338688&_asf=null&w=01029901&hdq=sogou-clse-f507783927f2ec27&duppid=1&cid=&cid=&s_from=result_up&sut=3994&sst0=1542345989626&lkt=0%2C0%2C0&sugsuv=00B66944761A10BC5B28AFF86BBCB412&sugtime=1542345989626

考點分析:

location對象java

字符串轉對象格式web

 1 getSearch(location.search.substring(1))
 2   function getSearch(str){
 3     str = str || undefined;
 4     let obj  = {};
 5     if(str){//沒有查詢字符串返回空數組
 6       let arr = str.split('&');
 7       arr.forEach((el)=>{
 8         let item = el.split('=')
 9         obj[item[0]] = item[1];
10       })
11       console.log(obj)
12     }
13     return obj;
14   }

解決思路:

一、location對象的search屬性拿到url中的查詢字符串。傳到咱們提早封裝好的getSearch數組中(或者這一步能夠也封裝到函數中,但那樣函數就只能獲取location的查詢字符串了,不方便之後的擴展。因此將獲取字符串這一步提了出來)。面試

substring(1)是爲了刪掉拿到的字符串中,第一位的'?'字符。數據庫

二、getSearch函數思路數組

先利用「&」關鍵字將字符串分割成包含全部鍵值對字符串的數組。瀏覽器

而後遍歷數組,利用「=」關鍵字將數組的每一項再進行分割成新的多個數組。緩存

每一個數組的第0項做爲對象的鍵,第1項做爲數組的值。便可。安全

解決方案s:

見上圖和getSearch()函數

 

 

2018.11.17 面試題二:從輸入url到瀏覽器中顯示頁面,中間發生了什麼?

百度是個好東西,哈哈哈哈哈。。。

 看完這些後我總結的篇幅過長,已另開新土地整理。請跳轉至【面試題 - 從輸入url到瀏覽器中顯示頁面,中間發生了什麼?

 

2018.11.18 面試題三:get 和 post 的區別有哪些?

粗略總結以下:

get和post的區別是什麼

做用:

  get從服務器上獲取數據

  post向服務器上傳輸數據

方式:

  get是把參數數據隊列加到提交表單的ACTION屬性說指的URL中。值和表單內各個字段一一對應,在url中可以看到。簡而言之就是get將傳輸信息以key=value的方式拼接在url的後邊進行傳輸。能夠在url中明文查看傳輸數據

  post方法經過http的post機制,將表單內的各個字段與其內容放置在html header內,一塊兒傳送到表單的ACTION所執行的url地址。除非專業人時用戶是看不到的。簡而言之就是post將數據以key:value的對象形式在http header的請求頭中一塊兒傳送。

安全

  get低

  post高

緩存【

  get請求相似於查找過程,用戶獲取數據,能夠不用每次都與數據庫連接,因此可使用緩存。

  post作的可能是修改和刪除的工做,因此必須與數據庫交互,因此不能使用緩存。

大小

  get傳送數據量不能大於2kb。可是這個長度限制不是http協議規定的,get的最大長度是由於瀏覽器和web服務器限制url的長度致使的。而由於不一樣的web服務器和瀏覽器對於url長度的限制不同。因此對於get的限制也就不一。

  post傳送數據量lls4中最大量爲80kb,lls5中爲100kb。默認爲不受限制

服務端處理方式

  服務端用Rquest.QueryString獲取get方式變量的值

  post方式提交的數據,服務端用Request.Form獲取提交的數據

相關文章
相關標籤/搜索