url传递参数时有空格如何处理?

本文探讨了在JavaScript中处理参数传递和URL编码的问题,详细解释了如何避免参数中的空格导致的错误,并介绍了escape、encodeURI、encodeURIComponent及unescape等函数的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

通常在页面中要让某些内容点击后产生点击事件(非页面跳转)都会使用onclick,

但是这样不适于需要传递参数的情况,于是写成直接调用Javascript函数的方式:

<a href=javascript:somefunction(args)>content</a>

注意,这么写是有问题的,问题就在于somefunction中的参数args的值不能含有空格,

否则浏览器会认为空格后面的内容是<a>标签的某个属性,正确的写法应该是用引号将javascript:somefunction(args)引起来。
如:
"<a href='#' onclick=viewDetail('${staffId}','${operno}','${name}','${tech}'); ><s:text name="pub.Data.Detail" /></a>"
需改为:
"<a href='#' onclick=\"viewDetail('${staffId}','${operno}','${name}','${tech}'); \"><s:text name="pub.Data.Detail" /></a>"

 

另外还有一种方法可不必加这对引号,先将可能带空格的参数用escape函数处理一下,

然后在somefunction中用unescape函数解码就行了。值得注意的是用encodeURI、decodeURI加解码却不能成功。
      

在网上找了下escape和unescape、encodeURI和decodeURI、encodeURIComponent和decodeURIComponent三对组合之间的区别:
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
      

简单总结一下:

在不经过URL的时候,即纯Javascript调用用escape;

涉及URL时,通常用encodeURI对整个URL进行处理;

仅当URL中含有特殊参数时,对该特殊参数局部使用encodeURIComponent。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值