没有从查询字符串中获得正确的链接

本文关键字:链接 查询 字符串 | 更新日期: 2023-09-27 18:05:42

你好,我已经开发了一个演示应用程序。我的第一个HTML页面看起来像

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        function clickPdf() {
            window.location=("http://localhost:63320/WebForm1.aspx?url=http://localhost:63320/nestle/html5dctpro/index.html#Economic/Total-Group-Sales");
        }
    </script>
</head>
<body>
    <input type="button" onclick="clickPdf()" value="DownloadPdf" />
</body>
</html>

我有一个aspx页面它看起来像

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var URL = Request.QueryString["url"];
    }
}

现在我的问题是我得到的是URL=http://localhost:63320/nestle/html5dctpro/index.html,而不是完整的url,由于#符号,它被切断了,谁能告诉我怎么才能得到完整的url。

谢谢

没有从查询字符串中获得正确的链接

在JavaScript中使用encodeURIComponent。该函数对特殊字符进行编码。另外,对URI中的, / ? : @ & = + $ #字符进行编码。

Javascript

:

<script type="text/javascript">
   function clickPdf() {
      var theURL = "http://localhost:63320/nestle/html5dctpro/index.html#Economic/Total-Group-Sales";
      window.location=("http://localhost:63320/WebForm1.aspx?url="+
                         encodeURIComponent(theURL));
   }
</script>

服务器端(无需更改):

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var URL = Request.QueryString["url"];            
    }
 }

我认为你没有使用好方法。

http://en.wikipedia.org/wiki/Query_string: "RFC 3986指定URI的查询组件是介于?和URI的结尾或字符#".

当你在querystring中发送数据时,只需替换像

这样的字符
#,& 

与它们的URL编码等价。在这种情况下,替换

# with %23

只是一个演示:

var str = "http://localhost:63320/WebForm1.aspx?url=http://localhost:63320/nestle/html5dctpro/index.html#Economic/Total-Group-Sales");
var res = str.replace("#", "%28"); 

。. NET将无法直接给您哈希(即#之后的位),而不会被其他东西(如JavaScript)告知。

这是因为浏览器没有告诉服务器哈希值是什么。

你想做的可以通过JavaScript完成。(如果有必要,JavaScript可以通过window.location.hash访问哈希值。)

所以如果你真的想把哈希传递给。net,你需要让JavaScript通过哈希本身以外的东西传递它。也许另一个GET变量。

例如:

window.location=("http://localhost:63320/WebForm1.aspx?url=http://localhost:63320/nestle/html5dctpro/index.html&hash=Economic/Total-Group-Sales#hash=Economic/Total-Group-Sales");

(甚至删除原始哈希,如果它有进一步的理由。)

使用JavaScript encodeURI并在服务器级解码:http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_encodeuri