前端知识(十)———JavaScript 使用URL跳转传递数组对象数据类型的方法

目录

首先了解一下正常传递基本数据类型

JavaScript跳转页面方法

JavaScript路由传递参数

JavaScript路由接收参数传递对象、数组


在前端有的时候会需要用链接进行传递参数,基本数据类型的传递还是比较简单的,但是如果要传递引用数据类型就比较麻烦了,虽然使用sessionStorage或者localStorage也可以实现页面传参,但是如果是多端进行传参就不能够实现了,比如说在pc端的一个页面生成了一个二维码,需要手机端去打开浏览,但是手机进入可能会需要向后台请求数据,这个时候就会用到参数,下面给大家分享一个页面之间传递引用数据类型的方法,这个也是可以实现二维码传参的:


首先了解一下正常传递基本数据类型


跳转传参是指在页面跳转时,将部分数据拼接到URL路径上,一并跳转到另一个页面上,这里要注意拼接,返回的会是字符串的形式:

JavaScript 跳转页面方法

window.location.href = 'http://www.baidu.com'; // 通过改变location.href来实现页面跳转 常用
window.location.replace('http://www.baidu.com'); // 通过location.replace替换当前页面路径来实现页面跳转
window.location.assign('http://www.baidu.com'); // 通过location.assign加载新文档来实现页面跳转

注意区别:


href是在当前页面进行跳转,浏览器的后退按钮还是可以点击的
replace则是将当前页面的路径进行了替换,浏览器的后退按钮不会在生效
使用location.assign()方法传递的URL必须是绝对路径,否则会导致页面无法重定向的情况,而且在IE8以下版本中,如果URL的长度超过了2083个字符,调用location.assign()方法将会失败,在一些浏览器中,如果在页面加载完成后对location.assign()进行调用,可能会导致页面闪烁现象

JavaScript 路由传递参数

使用路由传参可以参考了解浏览器的地址链接,‘?’ 后边的就是参数,多个参数用 ‘&’ 分割

// 单传值
window.location.href = 'http://www.baidu.com?1';
window.location.replace('http://www.baidu.com?1');
window.location.assign('http://www.baidu.com?1');
// 传键值对
window.location.href = 'http://www.baidu.com?id=1';
window.location.replace('http://www.baidu.com?id=1');
window.location.assign('http://www.baidu.com?id=1');
// 多个参数
window.location.href = 'http://www.baidu.com?id=1&value=asdf';
window.location.replace('http://www.baidu.com?id=1&value=asdf');
window.location.assign('http://www.baidu.com?id=1&value=asdf');

这些只是简单的数据类型,如果需要传递引用数据类型或者数据中存在汉字,需要先使用JSON.stringify() 方法将数据进行转换

let str = '张三';
let json_str = JSON.stringify(str);// 转换为json格式
//
window.location.href = encodeURL('http://www.baidu.com?id=1&value=' + json_str);
//
window.location.replace(encodeURL('http://www.baidu.com?id=1&value=' + json_str));
//
window.location.assign(encodeURL('http://www.baidu.com?id=1&value=' + json_str));

JavaScript 路由接收参数 

let str = window.location.search; //获取链接中传递的参数
let params = str.substring(str.indexOf("=") + 1);
dataJson = JSON.parse(decodeURI(params));
console.log("dataJson :", dataJson);

// 或者
let data = new URLSearchParams(window.location.search);
console.log(JSON.parse(data.get('id')));
console.log(JSON.parse(data.get('value')));

这里推荐使用第二种方法,更为简便

传递对象、数组

上边已经将方法说明过了,下面的是示例:
页面跳转demo:

let arr = {
	name: 'zz',
	sex: '男',
	age: 11
}
let datajson = JSON.stringify(arr);
// 跳转页面,这里需要大家自己将页面路径进行修改
window.location.href = encodeURI('accept.html?datajson=' + datajson);

接收参数demo:

let dataJson;
let str = window.location.search; //获取链接中传递的参数
let arr = str.substring(str.indexOf("=") + 1);
dataJson = $.parseJSON(decodeURI(arr));
console.log("dataJson :", dataJson);
// 或者

let data = new URLSearchParams(window.location.search);
console.log(JSON.parse(data.get('datajson')));

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
? 74. 您认为VR系统的社会影响如何? 75. 您认为VR系统的文化影响如在 Spring Boot 后端中,您可以使用 `@RequestBody` 注解将 POST 请求中的 JSON 数据绑定到一个 Java 对何? 76. 您认为VR系统的经济影响如何? 77. 您认为VR系统是否能够成为象上,然后在该对象使用 List 属性来接收前端传递数组数据。 以下是一个示例代码未来的主流? 78. 您认为未来的VR系统会有哪些新的变革? 79. 您认: ```java @RestController @RequestMapping("/api") public class MyController { @PostMapping("/processList") public void processList(@RequestBody为未来的VR系统会对人类社会产生哪些深远影响? 80. 您认为未来的 MyListRequest request) { List<String> myList = request.getList(); // 处理 myList 数组 } } public class MyListRequest { private List<String> list; // Getter and Setter } ``` 在前端中,您可以使用 JavaScript 创建VR系统会对人类文化产生哪些影响? 81. 您认为未来的VR系统会对人类一个包含数组数据的 JSON 对象,并使用 `fetch()` 函数发送 POST 请求,将该 JSON 数据作为请求体发送到经济产生哪些影响? 82. 您认为未来的VR系统会对人类科技产生哪些后端。 以下是一个示例代码: ```javascript let myArray = ["item1", "item2", "item3"]; 影响? 83. 您认为未来的VR系统会对人类教育产生哪些影响? 84. 您let myData = { list: myArray }; fetch('/api/processList', { method: 'POST', headers: { 认为未来的VR系统会对人类医疗产生哪些影响? 85. 您认为未来的VR 'Content-Type': 'application/json' }, body: JSON.stringify(myData) }) .then(response => { console.log('Response系统会对人类娱乐产生哪些影响? 86. 您认为未来的VR系统会对人类艺:', response); }) .catch(error => { console.error('Error:', error); }); ``` 在上面的代码中,我们首先创建一个包含数组数据的 `myArray` 数组,然后将其添加到 JSON 对象 `myData` 中,术产生哪些影响? 87. 您认为未来的VR系统会对人类设计产生哪些影响该对象具有与后端 Java 类中的 `MyListRequest` 类相同的属性名称。然后,我们使用 `? 88. 您认为未来的VR系统会对人类社交产生哪些影响? 89. 您认为fetch()` 函数发送 POST 请求,将 `myData` 对象作为请求体发送到后端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值