ASP网站URL参数PR值从0011变为9的原因排查求助
问题分析与解决方案
这问题的根源完全出在JavaScript的参数解析上,和ASP.NET/IIS环境关系不大,前导零绝对不是干扰项——它就是导致参数变成9的直接原因!
具体原因:
你看调用代码里的这部分:
<a href="javascript:OpenBillBack(961,0011)">OPEN</a>
这里第二个参数0011没有加引号,JavaScript会把它当作数字字面量处理。而在ES5及更早的JS规范里,以0开头的数字字面量会被解析为八进制数。
八进制的0011转换成十进制就是9(计算方式:18^1 + 18^0 = 8+1=9),所以当OpenBillBack函数拿到这个参数时,它接收到的已经是数字9,而不是你以为的"0011"字符串,自然拼到URL里后PR参数就是9了。
解决方案:
把参数改成字符串形式,给0011加上引号,让JS把它当作字符串传递:
<a href="javascript:OpenBillBack(961,'0011')">OPEN</a>
这样函数里拼接URL时,就会保留完整的"0011",后台接收到的PR参数也会是正确的字符串值。
额外验证:
你提到无前导零的链接没问题,比如如果传11(不带引号),JS会把它当作十进制数字11,不会做进制转换,所以后台能拿到正确的11,这也印证了前导零是问题的核心。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

