使用"&"和" +"在Querystring中

时间:2014-11-12 09:38:15

标签: javascript asp.net vb.net

在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"之间包含空格。标志,空格也转换为"加"迹象。

你知道如何解决这个问题吗?

4 个答案:

答案 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)

您可以使用预定义的 UrlEncode UrlDecode 方法。这些方法将帮助您在查询字符串中传递特殊字符。看看这些例子。

UrlDecodeUrlEncode 希望这可以帮到你。

答案 3 :(得分:-1)

嘿,还有另一种方式:

在将它传递给查询字符串之前只需替换:

.Replace(&#34;&安培;&#34;&#34;%26&#34);

在另一个页面上,它会自动将%26读作&amp;,但之后也不会将其读作&amp;,只需再次替换:

.Replace(&#34;%26&#34;&#34;&安培;&#34);