【此係列優先解決本身經歷的面試題】javascript
測試地址爲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項做爲數組的值。便可。安全
見上圖和getSearch()函數
百度是個好東西,哈哈哈哈哈。。。
看完這些後我總結的篇幅過長,已另開新土地整理。請跳轉至【面試題 - 從輸入url到瀏覽器中顯示頁面,中間發生了什麼?】
粗略總結以下:
做用:
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獲取提交的數據