如何通过地址栏传递参数及获得参数

在通过地址栏进行参数的传递及取值时,首先应该了解一下URL的组成部分及其每部分的取得方法和作用说明:

 

URL:统一资源定位符 (Uniform Resource Locator, URL)

完整的URL由这几个部分构成:

scheme://host:port/path?query#fragment

scheme:通信协议

常用的通信协议有:http,ftp,maito

host:主机

服务器(计算机)域名系统 (DNS) 主机名或 IP 地址。

port:端口号

整数,可选,省略时使用方案的默认端口,如http的默认端口为80

path:路径

由零或多个"/"符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。

query:查询

可选,用于给动态网页(如使用CGIISAPIPHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用"&"符号隔开,每个参数的名和值用"="符号隔开。

fragment:信息片断

字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。(也称为锚点.)

对于这样一个URLhttp://www.jbxue.com:80/fisker/post/0703/window.location.html?ver=1.0&id=6#imhere

可以用javascript获得其中的各个部分。

1window.location.href

整个URl字符串(在浏览器中就是完整的地址栏)

本例返回值: http://www.jbxue.com:80/fisker/post/0703/window.location.html?ver=1.0&id=6#imhere

2window.location.protocol

URL 的协议部分

本例返回值:http:

3window.location.host

URL 的主机部分

本例返回值:www.jbxue.com

4window.location.port

URL 的端口部分

如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符

本例返回值:""

5window.location.pathname

URL 的路径部分(就是文件地址)

本例返回值:/fisker/post/0703/window.location.html

6window.location.search

查询(参数)部分

除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值

本例返回值:?ver=1.0&id=6

7window.location.hash

锚点

本例返回值:#imhere 那么就可以用这个方法取到指定参数

 

以下则通过一个实例来进行对通过地址栏传递参数及取值的了解。

 

如果要通过URL进行传值.则需要把要传递的信息接在URL,如:

post.html

<html>

   <head>

<meta charset="GBK"/>

<title></title>

<script>

     function post(){

                var url = "read.html?name="+escape(document.all.name.value);

url +="&password="+escape(document.all.password.value); 

window.location = url ;

     };

</script>

   </head>

   <body>

     姓名:<input type="text" name="name"/><br/>

     密码:<input type="text" name="password"/><br/>

     <input type="button" value="post" onClick="post()"/>

   </body>

</html>

 

在把参数接在URL后,这时就需要对地址栏里的参数进行取值并且将其输出,具体实现方法如下:

read.html

<html>

   <head>

<title></title>

<script>

  window.onload = function(){

   var url = window.location.search;

   var request = new Object();

      if(url.indexOf("?")!=-1){  <!--判断是否存在,如果返回-1,则表明不存在-->

      var str = url.substr(1);   <!--从第1个字符开始截取-->

      var strs = str.split("&");·<!--表示以“&’”为分隔符进行分隔,返回的是一个数组-->

      for(var i=0;i<strs.length;i++){

request[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);

      }

   }

   alert("name="+request["name"]);

   alert("password="+request["password"]);

};

</script>

 

   </head>

   <body><body>

</html>

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在React中,有多种方法可以通过地址栏传递参数。其中一种方法是使用params参数。在路由链接中,可以使用`<Link>`组件将参数传递给目标页面,例如: ```jsx <Link to="/production/123">跳转到产品页面</Link> ``` 在Route组件中,需要配置参数名称,例如: ```jsx <Route path="/production/:productionId" component={production} /> ``` 在目标页面(production组件)中,可以通过this.props.match.params来获取传递的参数,例如: ```jsx const { productionId } = this.props.match.params; ``` 另一种方法是使用state参数。在路由链接中,可以使用`<Link>`组件将参数传递给目标页面,例如: ```jsx <Link to={{ pathname: '/list', state: { name: 'xlf' } }}>跳转到列表页面</Link> ``` 在目标页面中,可以通过this.props.location.state来获取传递的参数,例如: ```jsx console.log(this.props.location.state.name); // 输出传递过来的name参数 ``` 还有其他的传递参数的方法,如search参数和query参数。但是需要注意,这些方法有一些限制,例如只能传递字符串,不能传递对象,并且参数过多可能导致URL过长。另外,在使用HashRouter时,刷新地址栏会导致参数丢失,而BrowserRouter则不会丢失参数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [React 路由传参的三种方式](https://blog.csdn.net/weixin_42332641/article/details/125374675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [react页面跳转带参数](https://blog.csdn.net/weixin_54368936/article/details/122452871)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [react路由传递参数的几种方法](https://blog.csdn.net/Dax1_/article/details/126445502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值