get和post的參數互轉


今天在開發過程中遇見一個需求,需要獲取get請求的參數 demo:從get的參數轉為post的對象參數 file:///C:/Users/11/Desktop/myCode/es6/0422/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92.html?novel_id=21&id=123455 如何獲取novel_id和id呢?

1.window.location.search獲取得到“?novel_id=21&id=123455”,這很容易想到,沒什么問題。

2.無論如何“?”我們是不需要的,可一先去掉。可以明顯看出“?”是字符串的第一個字符,這里使用字符串的截取方法substr(1,)。從而得到新的字符串“novel_id=21&id=123455”。

3.到這里容易發現參數間都是用"&"符號拼接的,這讓我想到了字符串的split('&')方法。這樣就得到了["novel_id=21", "id=123455"]。

4.現在就清晰了,通過循環和再次的split('=')就能得到key與value了。

整體代碼如下:

    let strParam = window.location.search.substr(1);
    let arr = strParam.split('&');
    let obj={};
    for(let item of arr){
        let keyarr=item.split('=');
        obj[keyarr[0]]=keyarr[1];
    }

 

如何將post參數轉換為get參數?

1.開始我想到的是用for in遍歷對象再做拼接,但這樣字符串尾部會多一個“&”,如果先轉為數組,再用join('&'),就沒問題了。

2.既然是為了遍歷對象,用Object.keys(),也可得到一個鍵值的可遍歷數組,在用map或reduce方法可得到鍵值對的數組。

 

function objToStr(obj){
        let paramArr=Object.keys(obj).reduce((acc,cur)=>{
            acc.push(cur+'='+obj[cur]);
            return acc;
        },[]);
        return paramArr.join('&');
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM