【问题标题】:unable to pass # character via querystring无法通过查询字符串传递 # 字符
【发布时间】:2014-04-07 13:16:08
【问题描述】:

我在 jquery 中创建了一个链接,其查询字符串值为 "www.mypage.com?id=" + id

我遇到的问题是,在最近的一个案例中,一些 id 中包含 # 字符,这破坏了 id 值。如何从 jquery 创建一个带有 # 的查询字符串,并在页面加载时在 C# 中准确读取该值?

【问题讨论】:

  • 您应该始终在构建 URL 时使用encodeURIComponent()。除了#,还有很多其他字符需要转义。

标签: c# jquery query-string


【解决方案1】:

使用

encodeURIComponent()

在通过之前。

喜欢:

"www.mypage.com?id=" + encodeURIComponent(id);

或者只是编码整个网址。

【讨论】:

  • @aevitas,编码整个 uri 会编码分隔符,例如 '&'... 你需要编码特定的原子实体。
【解决方案2】:

不要将 '# 作为 id 的一部分传递。它用于分隔部分 url。要么转义它,要么修复将 # 作为 id 的一部分发送的代码(因为我怀疑它不应该)。

【讨论】:

  • 我明白,但它是来自数据库的值,是客户端创建的 ID,其中一些包含 # 字符
  • 就个人而言,如果我能提供帮助的话,我永远不会使用# 作为标识符的一部分。也就是说,正如 Amit 指出的那样,您必须对 id 进行编码。
【解决方案3】:

您可以找到/替换 '#' 的实例并换成 '%23' 这是转义字符。

作为参考,我在 Google 快速搜索中找到了以下常见转义字符列表:http://www.werockyourweb.com/url-escape-characters

【讨论】:

  • 我在看到你之前添加了我的答案。事后我赞成你的回答。
【解决方案4】:

我希望这可以帮助你,这是一个小小的代码和平:

<body onload="catchingData()">


<script type="text/javascript" language="javascript">
    function catchingData() {
        var myurl = document.URL;
        var myToken = myurl.split("access_token"); //---> Split your url in the browser
        self.location = "yourWebForm.aspx" + "?" + myToken[1];
    }
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多