使用javascript在URL中传递包含特殊字符的参数

本文关键字:包含 特殊字符 参数 javascript URL 使用 | 更新日期: 2023-09-27 18:13:53

嗨,我试图调用一个动作结果在我的控制器包含参数,但每当这些参数之一包含#符号(特殊字符)的字符串参数不包括# sing在参数和下一步所有参数设置为null。

下面是我的java脚本,通过它我调用我的操作结果。

    <script type="text/javascript">
        $(document).ready(function () {
            $('#btnExport').unbind().click(function () {
                var url = @Url.Content("~/BankStatement/ExportBankStatementSummary") +
                    "?legalName=" + '@ViewBag.LegalName' +
                    "&dba=" + '@ViewBag.DBA' + 
                    "&contactPerson=" + '@ViewBag.ContactPerson' +
                    "&address=" + '@ViewBag.Address' + 
                    "&period=" + '@ViewBag.Period' +
                    "&totalHeading=" + '@ViewBag.TotalHeading';
                window.location = url;
            });
        });
    </script>

这是在这个java脚本中调用的操作结果

public ActionResult ExportBankStatementSummary(string legalName, string dba, 
                                               string contactPerson, string address, 
                                               string period, string totalHeading)
    {
        ViewBag.LegalName = legalName;
        ViewBag.DBA = dba;
        ViewBag.ContactPerson = contactPerson;
        ViewBag.Address = address;
        ViewBag.Period = period;
        ViewBag.TotalHeading = totalHeading;
        ...

问题是,在动作结果参数中,当任何参数包含任何特殊字符(在本例中为#)时,该参数和下一个参数将变为空。

例如,如果地址为"street# 2",则参数address变为"Street",下一个参数period和totalHeading变为空。

任何帮助都将是非常感激的。

提前感谢。

使用javascript在URL中传递包含特殊字符的参数

我不同意重复这个问题,因为标记的重复问题被详细讨论过,详细的对话涵盖了这个问题的答案,但实际问题与这个问题完全不同。

您需要encodeURIComponent()

encodeuriccomponent()方法通过用表示字符的UTF-8编码的一个、两个、三个或四个转义序列替换特定字符的每个实例来编码统一资源标识符(URI)组件(对于由两个"代理"字符组成的字符,只有四个转义序列)。

 var url = @Url.Content("~/BankStatement/ExportBankStatementSummary") +
                "?legalName=" + encodeURIComponent('@ViewBag.LegalName')