"&" In QueryString

A

Arpan

A link has the following URL:

<a href="Page1.asp?cname=<%= Request.QueryString("cname") %>&cadd1=<%=
Request.QueryString("cadd1") %>&cadd2=<%= Request.QueryString("cadd2")
%>&cplace=<%= Request.QueryString("cplace") %>">Click</a>

Suppose the names in the above querystring have the following values:

cname="Danny"
cadd1="House 97"
cadd2="Sector 3 & 4"
cplace="Timbaktoo"

Becuase of the presence of an ampersand (&) in the value of cadd2 (between 3
and 4), the next page doesn't get the correct querystring. The querystring
carried forward to the next page looks something like this:

Page1.asp?cname=Danny&cadd1=House%2097&cadd2=Sector 3

That's it!!! Now how do I ensure that the presence of ampersand in any value
of the querystring doesn't affect the querystring in any way & the next page
gets the correct querystring? I even tried using Server.URLEncode but that
didn't make any difference.

Thanks,

Arpan
 
M

Mohamed Hosam

An easy way is to replace it with anything then replace that thing with it
again when you receive it.

For example:

<%
cadd2 = Replace(cadd2, "&", "zxc")
%>
<a href=page1.asp?cadd2=<%=cadd2%>&...>Click</a>

When you receive it,

<%
cadd2 = Replace(Request.QueryString("cadd2"), "zxc", "&")
%>

Mohamed
 
A

Aaron Bertrand [MVP]

gets the correct querystring? I even tried using Server.URLEncode but that
didn't make any difference.

Can you show the code you used, and how it "didn't make any difference"?
Server.URLEncode should encode your spaces and special characters so that
they are passed correctly in the URL and are fully recoverable by the
receiving page.
 
A

Arpan

Thanks Aaron. Actually I had to re-model the application where in a user
clicks a link in Page1.asp (href of the link along with the entire
querystring being the same as what I had provided in my first question). Due
to some reasons, I am assigning the href of the link in Page1.asp using
JavaScript (though it could have been done using ASP as well). Assume that
clicking this link takes the user to Page2.asp. In the JavaScript code in
Page1.asp (which directs the user to Page2.asp), I have used the function
decodeURI so that the ampersand existing within a value in the querystring
gets passed on to Page2.asp. As expected, Page2.asp gets the querystring in
the correct format. The querystring looks something like this:

?cname=Danny&cadd1=House 97&cadd2=Sector 3 & 4&cplace=Timbaktoo

Page2.asp has another link, clicking which the user is taken back to
Page1.asp along with the entire querystring. This is the code which creates
the link (note that I have encompassed the value of cadd2 in
Server.URLEncode()):

<a href="Page1.asp?cname=<%= Request.QueryString("cname") %>&cadd1=<%=
Request.QueryString("cadd1") %>&cadd2=<%=
Server.URLEncode(Request.QueryString("cadd2") %>&cplace=<%=
Request.QueryString("cplace") %>

But when the user goes back to Page1.asp, the querystring in Page1.asp looks
like this:

?cname=Danny&cadd1=House+97&cadd2=Sector+3+&cplace=Timbaktoo

Please note that in the value of cadd2, the characters "& 4" have been
neglected. I hope I have taken the right approach. Could you please try to
sort out this problem?

Thanks,

Regards,

Arpan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,228
Members
46,818
Latest member
SapanaCarpetStudio

Latest Threads

Top