详解js跨页面传参以及API的解释

news2024/11/25 14:39:30

详解js跨页面传参

  • 前言
  • 什么是跨页面传参?
  • 跨页面传参本质是什么?
  • 常见的跨页面传参方法
    • URL参数传递
    • localStorage和sessionStorage参数传递
    • Cookie传递
  • 经常听到API,那么到底的什么是API?

前几天有粉丝私信我,希望能把js跨页面传参讲一遍。ok,今天我们直接开整。

前言

还是那句话,搞明白这几个问题。
首先什么是跨页面传参?
其次跨页面传参具体怎么实现?
然后有那些方法?
以及有哪些需要拓展和了解的东西?


什么是跨页面传参?

跨页面传参通常是指在一个页面中通过JavaScript代码传递数据到另外一个页面。这些数据可以是字符串、数字、对象等等,可以用来进行页面跳转、页面渲染和数据处理等操作。


跨页面传参本质是什么?

跨页面传参的基本原理是将数据存储在一个变量或对象中,然后在跳转到另外一个页面时将这个变量或对象传递过去。在另外一个页面中,通过JavaScript代码获取这个变量或对象的值,从而完成跨页面传参。既然是先在原来的页面把需要用的数据存先在变量或对象中,在另一个页面接收这个变量或者对象。那么我们的注意力就要放在怎么存?怎么取?这两点问题上。无外乎这几种可能性:

1.其他页面存了数据,但是这个页面取数据的时候出问题了,比如取不出来,或者找不到这个变量。那么病灶就可能是存的时候出问题了。无外乎传参方法错误,以及书写错误所致。
2.上个页面存了数据,但是又在新的页面取不到数据,并且存的方式是正确的。那么病灶就是取的时候出问题了。
3.完全不会存数据,也不会取数据。


常见的跨页面传参方法

URL参数传递

举个栗子:
我们可以在一个页面上使用以下代码将数据作为URL参数传递到另一个页面:

window.location.href = 'page2.html?data=' + data;

在另一个页面上,我们可以使用以下代码获取URL参数:

var data = window.location.search.substring(1).split('=')[1];

这种方法非常简单,但也有一些限制。首先,URL参数的长度有限制,因此不能传递大量的数据。其次,URL参数可以被用户看到,因此不适合传递敏感信息。

你比如说:
我在百度里搜索:爱学习的Akali king
你看域名:

在这里插入图片描述

这不就是用url传参的吗?

再举个栗子:

// 页面A跳转到页面B并传递参数
var name = 'Tom';
window.location.href = 'pageB.html?name=' + encodeURIComponent(name);
// 页面B获取参数
var params = new URLSearchParams(window.location.search);
var name = params.get('name');
console.log(name); // 输出 'Tom'

需要注意的是,由于URL参数中可能会包含特殊字符,需要使用encodeURIComponent()方法进行编码,以避免传参出错。


localStorage和sessionStorage参数传递

localStorage和sessionStorage是HTML5提供的两种新的存储方式,它们可以在不同的页面之间传递数据。localStorage和sessionStorage都是用来存储数据的浏览器API,并不支持直接传参。但是我们可以通过存储一个JSON对象的方式来传递参数。

你比如说:我们可以把参数封装成一个对象,然后将这个对象转换成JSON字符串,存储到localStorage或sessionStorage中:

// 存储参数
var params = { name: 'Tom', age: 18 };
localStorage.setItem('params', JSON.stringify(params));
// 读取参数
var paramsStr = localStorage.getItem('params');
var params = JSON.parse(paramsStr);
console.log(params.name); // 输出 'Tom'
console.log(params.age); // 输出 18

需要注意的是,JSON.stringify()方法将对象转换成字符串时,如果对象中有函数、undefined、NaN等无法序列化的值,则会被忽略掉。因此,我们需要确保存储的对象中不包含这些值。


Cookie传递

Cookie是一种存储在用户计算机上的数据,它可以在不同的页面之间传递。我们可以使用JavaScript设置Cookie,然后在另一个页面上读取Cookie数据。例如,我们可以在一个页面上使用以下代码设置Cookie:

document.cookie = 'data=' + data;

在另一个页面上,我们可以使用以下代码读取Cookie数据:

var data = document.cookie.split('=')[1];

这种方法可以传递较大的数据,但也有一些限制。首先,Cookie数据存储在用户计算机上,因此用户可以修改Cookie数据。其次,Cookie数据的长度也有限制。


选择合适的方法去完成自己的需求,不可盲目跨页面传参
跨页面传参这个活就算干完了,在本页面取到了其他页面存的东西,那么就可以本页面使用了。在本页面使用这些数据时,无外乎函数之间的传参,这个我已经在之前的文章讲的很清楚了。
具体方法参见
js传参的六种方式
详解javaScript的事件中,复杂数据类型的传参(数组,对象,函数)
详解JavaScript的形参,实参以及传参

经常听到API,那么到底的什么是API?

API(Application Programming Interface,应用程序编程接口)是一组定义了软件系统如何与其他系统进行交互的接口,提供给开发者使用的一些函数、类、方法、协议等,用于访问外部系统或服务的功能。简单点说,API就是一种编程接口,是一种让不同的软件应用程序之间相互通信的方式。

举个栗子,你在使用微信、淘宝等应用的时候,它们提供的许多功能都是通过API来实现的。比如微信提供的获取用户信息、发送消息、支付等功能,淘宝提供的搜索商品、下单、查询订单等功能,都是通过API向外部系统或服务发送请求,获取数据或执行操作。

在前端开发中,我们经常使用浏览器提供的API,比如DOM API、Canvas API、XMLHttpRequest API等,用来操作网页、获取数据、与服务器进行交互等。同时,也可以通过调用第三方API,比如百度地图API、高德地图API、天气查询API等,来获取地图、天气等信息,丰富我们的应用功能。

总之,API是一种接口,是一种规范,定义了软件系统之间如何进行交互,让不同的应用程序之间可以互相调用、交换数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/459320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超越YOLOv8,飞桨推出精度最高的实时检测器RT-DETR!

‍‍ 众所周知,实时目标检测( Real-Time Object Detection )一直由 YOLO 系列模型主导。 飞桨在去年 3 月份推出了高精度通用目标检测模型 PP-YOLOE ,同年在 PP-YOLOE 的基础上提出了 PP-YOLOE 。后者在训练收敛速度、下游任务泛化能力以及高性能部署能力…

搞懂 API ,地图 API 制作方法分享

地图 API 是一种基于 Web 开发的应用程序编程接口,可以用于创建和展示地图及地理信息。以下是一些地图 API 制作的方法: 选择地图 API 平台:目前市场上有很多地图 API 平台供选择,比如 Google Maps API、百度地图 API、高德地图 A…

Chess.com:象棋社区网站每月访问量达 2.8 亿,年收入在 5000 万至 1 亿之间

Chess.com是世界领先的国际象棋社区。它始于 2007 年,目前年收入超过 5000 万美元。 核心功能 Live Chess 花了 5 个多月才发布。到那时,该网站已经拥有近100,000名会员。Chess.com 域名的重要性他们 80% 的用户来自过去 4 年 Chess.com的故事是如何开…

[算法前沿]--004-transformer的前世今生

文章目录 1.transformer介绍1.1 注意力机制1.2 Transformer架构1.2.1编码器1.2.2解码器 2. Transformer中的模块2.1 注意模块2.1.1 缩放点积注意事项2.1.2 多头注意 2.2 Transformer中的注意事项2.2.1 自注意2.2.2 掩蔽的自注意(自回归或因果注意)2.2.3 …

027:Mapbox GL加载circle样式图层,用data-driven风格绘制圆形

第027个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载circle样式图层。圆形样式图层在地图上呈现一个或多个实心圆。 您可以使用圆形图层来配置矢量切片中点或点集合要素的视觉外观。 圆形层渲染其半径以屏幕单位测量的圆形。 直接复制下面的 vue+mapbox源…

HTML5 <label> 标签、HTML5 <map> 标签

HTML5 <label> 标签 实例 HTML5 <label>标签用于为 input 元素做出标记。 带有两个输入字段和相关标记的简单 HTML 表单&#xff1a; <form action"demo_form.asp"><label for"male">Male</label><input type"ra…

【libuv】入门:queue work 的跨线程异步通信

通过阅读2012年的uv book 入门。有中文版 Handles and Requests libuv works by the user expressing interest in particular events. This is usually done by creating a handle to an I/O device, timer or process. Handles are opaque structs named as uv_TYPE_t where…

【分布式搜索引擎ES01】

分布式搜索引擎ES 分布式搜索引擎ES1.elasticsearch概念1.1.ES起源1.2.倒排索引1.2.1.正向索引1.2.2.倒排索引 1.3.es的一些概念1.3.1.文档和字段1.3.2.索引和映射1.3.3.mysql与elasticsearch 1.4.1安装es、kibana、IK分词器1.4.2扩展词词典与停用词词典 2.索引库操作2.1.mappi…

设置网格旋转轴心【Babylonjs】

推荐&#xff1a;用 NSDT场景设计器 快速搭建3D场景。 Babylon.js 中的轴心&#xff08;Pivot Point&#xff09;是使用父节点设置网格变换中心的替代方法&#xff0c;即用作旋转中心或放大中心的点。 注意&#xff1a;使用 setPivotPoint 产生的行为不同于在 3DS Max 和 Maya …

vue-cli的使用和单页面应用程序、使用vue-cli脚手架创建vue项目步骤

1.vue-cli的使用 vue-cli是Vue.js开发的标准工具。它简化了程序员基于webpack创建工程化的Vue项目的过程。 引用自vue-cli官网上的一句话: 程序员可以专注在撰写应用上&#xff0c;而不必花好几天去纠结webpack配置的问题。 中文官网: https://cli.vuejs.org/zh/ 1.1 安装 …

WTI纽约原油CFD是什么?交易技巧有哪些?

WTI常称为美国原油或纽约原油&#xff0c;WTI是West Texas Intermediate 的简称&#xff0c;代表西德州中级原油(West Texas Intermediate)&#xff0c;偶尔称为德州轻甜原油(Texas Light Sweet)&#xff0c;它是大宗商品交易中核心的石油基准。那么本文就来具体的聊聊&#xf…

接口自动化【四】(在接口自动化【三】上的优化_加入了类前置,表格中替换数据,断言)

前言 一、使用 unittest框架结合setUpClass前置条件上传图片 二、一个类里面同时有类方法和实例方法----补充知识点&#xff08;需要引用类方法中的变量&#xff09; 三、结合类前置setUpClass&#xff0c;ddt&#xff0c;Excel表格数据&#xff0c;进行上传图片 四、加入l…

铁路应答器传输系统介绍

应答器传输系统 应答器传输系统是安全点式信息传输系统&#xff0c;通过应答器实现地面设备向车载设备传输信息。 应答器可根据应用需求向车载设备传输固定的&#xff08;通过无源应答器&#xff09;或可变的&#xff08;通过有源应答器&#xff09;上行链路数据。 当天线单…

【gitee】安装依赖报错

gitee地址 安装依赖时报错 Error while executing: npm ERR! D:\gongju\Git\cmd\git.EXE ls-remote -h -t git://github.com/adobe-web npm ERR! Error while executing: npm ERR! D:\git\Git\cmd\git.EXE ls-remote -h -t https://github.com/nhn/raphael.git npm ERR! npm…

数据分析实战 205 :项目分析思路 —— 某在线教育机构经营分析

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 文章目录 一、思路分析1.1 教育行业营收转化模型1.2 某教育机构利润结构1.3 问题确认与指标拆解&#xff1a;业务逻辑图1.3.1 确认毛利额数据异常的问题1.3.2 提升毛利额的方案 1.4 问题解决思路 一…

vue大屏开发系列—使用echart开发省市地图数据,并点击省获取市地图数据

1. 本文在基础上进行改进&#xff0c;后端使用若依后端 IofTV-Screen: &#x1f525;一个基于 vue、datav、Echart 框架的物联网可视化&#xff08;大屏展示&#xff09;模板&#xff0c;提供数据动态刷新渲染、屏幕适应、数据滚动配置&#xff0c;内部图表自由替换、Mixins注入…

JS Array数组常用方法(附上相应的用法及示例)

会改变原数组的方法 1、array.push(需要在末尾添加的数据)【给数组末尾添加一个元素】 2、array.unshift(需要在首位添加的数据)【给数组首位添加一个元素】 3、array.pop()【从数组末尾删除元素,不需要传参】 4、array.shift()【从数组首位开始删除元素,不需要传参】 5、arra…

【算法与数据结构】5 常见的时间复杂度,你知道吗?

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于算法与数据结构体系专栏,本专栏对于0基础者极为友好,欢迎与我一起完成算法与数据结构的从0到1的跨越 时间复杂度与空间复杂度 一、前情回顾二、常见的时间复杂度1.常见的…

Day954.以增量演进为手段 -遗留系统现代化实战

以增量演进为手段 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于以增量演进为手段的内容。 遗留系统现代化中的 HOW&#xff0c;也就是第三个原则&#xff0c;以增量演进为手段。 很多团队在一阵大张旗鼓的遗留系统改造后&#xff0c;终于迎来了最终的“梭哈”时…

【线程同步】

一个大佬的笔记&#xff0c;比较详细 一、线程概述 1.线程概述 与进程&#xff08;process&#xff09;类似&#xff0c;线程&#xff08;thread&#xff09;是允许应用程序并发执行多个任务的一种机 制。一个进程可以包含多个线程。同一个程序中的所有线程均会独立执行相同…