【发布时间】: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