JS | 如何实现将页面间跳转时地址后带的参数进行格式转换
【摘要】 我们在做项目的过程中,经常会遇到不同的页面会公用几个字段,而这几个字段我们可以存放到cookie中,在另外一个页面中获取cookie值。但是如果这个字段是动态变化的,我们就不能将它存放在cookie中,而是在页面跳转的时候将这几个参数通过地址带到跳转地址页面。例如跳转地址:http://localhost/learning/mobile/personal/login.html?selectC...
我们在做项目的过程中,经常会遇到不同的页面会公用几个字段,而这几个字段我们可以存放到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; };
现在我们基本就解决了当前地址后携带的参数进行格式转换的问题。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)