无法使用 AJAX 调用在另一个控制器中执行操作

问题描述 投票:0回答:1

我正在尝试在我的 MVC 应用程序中执行代码,在我的 Web 应用程序中,用户在登录时必须先验证他们的电话号码,然后才能单击我的应用程序中的任何菜单。 我在 MVC 中使用 ErrorController 功能,这样它就可以阻止用户在应用程序中执行任何操作。 我正在尝试执行一个操作,向他们发送带有代码的 2FA 文本消息,然后显示模式弹出窗口并返回 PartialView,他们可以在其中输入代码,以便他们随后可以继续应用程序。

在我的错误控制器中,我首先尝试使用 RedirectToAction 方法来访问VerifyPhoneNumber 操作,但在某处读到不能在 PartialViews 上使用它。 所以我尝试使用如下所示的 AJAX 调用操作。 但是,它似乎没有执行VerifyPhoneNumber操作,我什至设置了一个断点。 我做错了什么或者我需要以另一种方式执行此逻辑? 谢谢。

调用主页的Action代码:

public ActionResult UnverifiedPhoneNumber()
{
    return View();
}

我尝试对VerifyPhoneNumber操作进行AJAX调用以向该用户显示弹出窗口的主页可以输入他们的2FA代码:

@model HandleErrorInfo
@{
    const string Title = "Verify Phone Number";
    ViewBag.Title = Title;
}
<script>
    alert('hello');
        $(document).ready(function () {
            $.ajax({
                url: "/Account/VerifyPhoneNumber",
            type: "POST",
            dataType: "html",
                success: function(data) {
                  // Handle the response data here
                  console.log(data);
                },
                error: function(error) {
                  // Handle errors here
                  console.error(error);
                }
            });
        });
    </script>
<h1 class="text-danger">@Title</h1>
<h2 class="text-danger">Before you can continue to use the site, verify your phone number</h2>

我尝试执行的另一个控制器中的操作代码发送 2FA SMS 代码并执行弹出窗口:

   [Display(Name = "Verify Phone Number", Description = "Verify Phone Number")]
    public async Task<PartialViewResult> VerifyPhoneNumber()
    {
         ....Send SMS code to user's phone number .....
        Context.Log("Opened Verify Phone Number modal");
        return PartialView("_VerifyPhoneNumber", new VerifyPhoneNumberModel());
    }
c# .net ajax asp.net-mvc model-view-controller
1个回答
0
投票

你可以尝试在你的ajax中将异步设置为假并尝试

<script>
    alert('hello');
        $(document).ready(function () {
            $.ajax({
                url: "/Account/VerifyPhoneNumber",
                async: false,
            type: "POST",
            dataType: "html",
© www.soinside.com 2019 - 2024. All rights reserved.