没有从查询字符串中获得正确的链接
本文关键字:链接 查询 字符串 | 更新日期: 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中的, / ? : @ & = + $ #
字符进行编码。
:
<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