【问题标题】:Passing parameter to window.location.href fails将参数传递给 window.location.href 失败
【发布时间】:2021-11-09 00:40:57
【问题描述】:

我正在尝试将当前登录的 Azure AD 用户身份传递给 ajax 方法,以便它可以用作window.location.href 中的输入参数

@section Scripts {
    <script type="text/javascript">
    $("#button").click(function () {
        var orderedQuantity = $("#txt").val();
        var orderId = $("#orderId").val();
        var data = {
            orderId: orderId,
            orderedQuantity: orderedQuantity,
        }
        var loggedUser = @User.Identity.Name;

        $.ajax({
            type: 'POST',
            url: '@Url.Action("EditItem", "Orders")',
            data: data,
            dataType: "json",
            success: function (result) {
                if (result.status === "NotAvailable") {
                   $("#errorMessage").val("Enter a valid Quantity");
                }
                else {
                    var url = '@Url.Action("Index", "Orders")';
                    window.location.href = url + "?custEmail="+loggedUser;
                }
            },
            error: function (error) {
                    alert(error);
                }
        });
    });
    </script>

我将@User.Identity.Name; 存储在loggedUser 变量中,并将其用作window.location.href = url + "?custEmail="+loggedUser; 中的输入参数。它会抛出类似Uncaught SyntaxError: Invalid or unexpected token

的错误

任何人都可以说我是否在这里遗漏了任何东西。我在其他地方将输入参数传递给订单页面,但它在 ajax 方法中失败。我什至尝试在下面点赞

var loggedUser = User.Identity.Name;

它甚至会像Uncaught ReferenceError: User is not defined一样出错

谁能建议我在这里缺少什么

【问题讨论】:

  • 你不能这样做,因为当前状态不会持续到 else cluse,你能分享你的 url + "?custEmail="+loggedUser 方法签名吗?
  • @MdFaridUddinKiron 我不确定我是否在关注你。我希望 URL 类似于 https://localhost:44330/Orders?custEmail=xyz@abc.org
  • 你能仔细检查一下用户是否在当前会话中吗? var loggedUser = '@User.Identity.Name'; console.log(loggedUser); 或分享您如何获取当前登录用户。
  • 触发问题的一种简单方法,1. First assign dummy value on var loggedUser = "testuser@outlook.com" 然后观察请求是否顺利。如果第 1 步顺利,请检查您的@User.Identity.Name,因为这意味着用户不在会话中。我已经在本地测试了它的工作原理。

标签: c# ajax asp.net-core asp.net-core-mvc


【解决方案1】:

请添加如下引号:

var loggedUser = "@User.Identity.Name";  //or `@User.Identity.Name` 

【讨论】:

  • 两者都不起作用
  • 错误信息是什么?
  • 我在 URL 中得到了"@User.Identity.Name" 字符串...但我正在尝试传递当前登录的用户
  • URL 现在看起来像 https://localhost:44330/Orders?custEmail=User.Identity.Name 但我希望它传递来自 AzureAD https://localhost:44330/Orders?custEmail=xyz@abc.org 的登录用户身份
  • 这似乎令人难以置信。 @User.Identity.Name 将在应用程序运行时生成值,无论您使用 ` ` 或 " "' '。您确定使用@User 而不是User
猜你喜欢
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
  • 2019-04-15
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
  • 2019-11-13
相关资源
最近更新 更多