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('&');
    }

 

转载于:https://www.cnblogs.com/maoBable/p/10837800.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值