在Javascript中调用以下URL。
var par = "Participant.aspx?ID=" + Id + "&NAME=" + Name+ "&FIRSTNAME=" + Firstname;
有时,姓名或名字包含"&符号"或者"加"登录。
For Example: Richard & Michael or Richard + Michael
在服务器端,我读取了这样的查询字符串:
Dim Name As String = Request.QueryString("NAME")
Dim Firstname As String = Request.QueryString("FIRSTNAME")
我的问题是,如果查询字符串包含" plus"标志,然后标志转换为空格('')如果查询字符串包含"符号",那么"符号"之后的所有内容被删除。
我尝试了几件事。 Request.Form而不是Reqeust.Querystring,我也尝试过Server.URLEncode。但两者都不合适。
使用URLEncode是问题,如果Querystring在Name和" plus"之间包含空格。标志,空格也转换为"加"迹象。
你知道如何解决这个问题吗?
答案 0 :(得分:2)
您可以将encodeURIComponent用于查询字符串值,然后将其设置为查询字符串
var url = encodeURIComponent($("#<%=hdnPageQuery.ClientID%>").val());
var title = encodeURIComponent(document.title);
var redirectUrl = $("#<%=hdnPageTarget.ClientID%>").val();
var outputUrl = redirectUrl + '?url=' + url + '&title=' + title;
$('#ancSendToFriendLink').attr('href', outputUrl);
答案 1 :(得分:1)
请记住,查询字符串的内容(名称和值)必须正确地进行URI编码。如果该行在JavaScript中,您可以这样做:
var par = "Participant.aspx?ID=" + encodeURIComponent(Id) +
"&NAME=" + encodeURIComponent(Name) +
"&FIRSTNAME=" + encodeURIComponent(Firstname);
(从技术上讲,名称也应该编码,但“ID”,“NAME”和“FIRSTNAME”编码完全相同,所以我没有使用encodeURIComponent
。)
请参阅AntP's comment加号和空格:
“使用URLEncode是一个问题,如果Querystring在Name和”plus“符号之间包含空格,则空格也会转换为”加号“。” - 这就是应该发生。加号表示空格。编码加号表示加号。
答案 2 :(得分:1)
答案 3 :(得分:-1)
在将它传递给查询字符串之前只需替换:
.Replace(&#34;&安培;&#34;&#34;%26&#34);
在另一个页面上,它会自动将%26读作&amp;,但之后也不会将其读作&amp;,只需再次替换:
.Replace(&#34;%26&#34;&#34;&安培;&#34);