我遇到以下问题:
我正在使用一个应用程序,允许用户连接文本以构建一个URL,通过GET方法将参数传递给ASP页面,例如:
http://myhostname/process.asp?param1=value1¶m2=value2
问题是value1,value2可以包含&符号,不能解释为文本字符。
此问题最常用的解决方案是对URL进行编码,这对我来说不是一个选项,因为我无法修改构建URL的程序。我可以修改process.asp页面,但不能修改连接文本字段并构建URL的程序。
我试图搜索的内容是:
如何使用javascript直接在浏览器中对URL进行编码
如何在阅读&
传递参数的其他方法,例如将它们作为用管道分隔的单个字符串传递
希望你能给我一些指导。
答案 0 :(得分:1)
您可以阅读整个查询字符串并自行解析,如下所示:
q = Request.QueryString
a = Split(q, "=")
i = 1
For Each s In a
If i mod 2 = 0 Then
If InStr(s, "&") <> InStrRev(s, "&") Then
Response.Write "Value: " & Left(s, InStrRev(s, "&") - 1) & "<br/>"
hidingParam = Right(s, Len(s) - InStrRev(s, "&"))
Response.Write "PAramName: " & hidingParam & "<br/>"
i = i + 1
Else
Response.Write "Value: " & s & "<br/>"
End If
Else
Response.Write "PAramName: " & s & "<br/>"
End If
i = i + 1
Next
的结果:强>
网址:...?Q=abc&def&P=123
生成
PAramName:Q
值:abc&amp; def
PAramName:P
值:123
请注意,这不太健壮。我只是在说明我的想法。我没有测试没有&
。
它也不会处理多个“=”字符(如果这也是可能的话)。
答案 1 :(得分:-1)
如果等于两个(或更多)&符号,则只有最后一个是参数分隔符。因此,使用上面的网址,并假设 value1 =“ abc&amp; def ”, value2 =“ 123 “,然后URL将如下所示:
http://myhostname/process.asp?param1=abc&def¶m2=123
请注意,在2个等于之间有2个&符号。最后一个将是您的参数分隔符,其余的是值的一部分。并且在最后一个等于之后的任何&符号也是值的一部分。
您必须剖析传入的URL并应用适当的逻辑。