JS如何实现将页面间跳转时地址后带的参数进行格式转换

我们在做项目的过程中,经常会遇到不同的页面会公用几个字段,而这几个字段我们可以存放到cookie中,在另外一个页面中获取cookie值。但是如果这个字段是动态变化的,我们就不能将它存放在cookie中,而是在页面跳转的时候将这几个参数通过地址带到跳转地址页面。

例如跳转地址:
http://localhost/learning/mobile/personal/login.html?selectCourseflag=0&&creditHour=2

通过以上方式,我们可以将参数传到跳转的页面,但是我们该如何获取到传递过来的参数呢?

此时,我们需要通过一些方法对其地址中?之后的参数进行解析并将它们转为数组对象的格式,以便于我们之后对这些字段的使用。

// 获取页面中的地址,对字段进行处理
function getlocationAddressByte() {
	var url = window.location.search;    //获取页面当前的地址全路径
	var localtion = url.substring(url.lastIndexOf('?')+1,url.length); //截取?以后的值存放在新的变量中
	var tempObj = {};
	var arr = localtion.split('&&');  
	
	for (var i = 0; i < arr.length; i++) {
		var tempTypeArray = arr[i].split('=');
		if (tempObj[tempTypeArray[0]]) {
			tempObj[tempTypeArray[0]] += ',' + tempTypeArray[1];
		} else {
			tempObj[tempTypeArray[0]] = tempTypeArray[1];
		}
	}
	return tempObj;
};

//结果为:{creditHour:2,selectCourseflag:0}

那么问题来了,我们该如何把对象转为数组对象的形式呢?以方便更好的使用参数。

// 把对象转换为数组对象  {a:'1',b:'2',c:'3'}转为[{a:'1'},{b:'2'},{c:'3'}]
function objToArr(obj) {
	var arr = [];
	for (let i in obj) {
		let o = {};
		o[i] = obj[i];
		arr.push(o);
	}
	return arr;
}

到这里,我们就基本处理完了这个问题。但是我们在做的过程中发现,当我们的参数是汉字的时候,会发现传递的中文是乱码的。因此,我们可以通过如下的方法进行解决。

//获取页面中的地址,对url携带的参数进行处理(解析中文)
function getRequest() {
    var url = window.location.search;
    var strs = [];
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for(var i = 0; i < strs.length; i ++) {
            //decodeURIComponent()对函数编码的URI进行解码
            theRequest[strs[i].split("=")[0]]=decodeURIComponent(strs[i].split("=")[1]);
        }
    }
    return theRequest;
};

现在我们基本就解决了当前地址后携带的参数进行格式转换的问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值