【问题标题】:Redirecting on successfull AJAX call does not work成功的 AJAX 调用重定向不起作用
【发布时间】:2020-05-18 00:00:48
【问题描述】:

我有这个 AJAX 调用:

$.ajax({
    type: "post",
    dataType: "json",
    data: { "json": JSON.stringify(json) },
    url: hostUrl,
    success: function (data) {
        if (data.status) {
            window.location.href = data.redirect;
        }
        else {
            alert(data.message);
        }
    },
    error: function (err) {
        console.log(err);
    }
});

data.redirect 包含 URL,用户应该被重定向到,但不幸的是,它什么也没做。

谁能告诉我是什么问题?

我尝试重定向到其他 ASP 控制器,甚至是 www.google.com,但没有任何效果。

这是 JSON 响应:

{"status":true,"message":"successful authentication","redirect":"/Users"}

我正在使用 ASP.NET Core,我在 Users 控制器中设置了断点,我正在重定向到该控制器。它只被击中一次。在该重定向之后,它停止重定向到该页面。但即使断点被命中,它也不会重定向到返回的视图。

这就像刚刚得到刷新

编辑

HTML,这似乎很重要:

<form method="post">
    Login: 
    <input name="loginName" type="text" /> <br/>
    Password: 
    <input name="passwordInput" type="password" /><br/>    
    <button id="authBtn" onclick="handleLogin()" value="Get message"></button>
</form>

【问题讨论】:

  • 使用浏览器内置的调试器,在if (data.status) 行设置断点,在console.log(err) 行设置另一个断点。然后做任何触发ajax的事情。这些断点之一将被命中并停止代码的执行。如果是if (data.status) 上的那个,将鼠标悬停在status 上,浏览器会显示它的值。看起来无论那个值是什么,它都是假的(所以它是0,或"",或false,等等)。
  • @T.J.Crowder 我查了,是true
  • 可能发生了其他事情,但您发布的代码对我来说适用于您共享的响应(即它重定向到指定的 URL)。
  • @haldo - 不,你没有。相对 URL 将正常扩展。
  • 好的,如果是true,你向前一步,你看到href的分配了吗?被赋予了什么价值?等等等等。我们无法为你解决这个问题,这是一个调试问题。

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


【解决方案1】:

这个ajax 调用被放置在HTML 中的form 元素中,它也在发送HTML 请求。

AJAX调用和重定向处理后,通过form元素返回原始HTTP请求并返回原始页面,看起来很清爽。

【讨论】:

    【解决方案2】:

    抑制表单提交。将按钮类型从 submit 更改为 button

    &lt;button type="button" id="authBtn" onclick="handleLogin()" value="Get message"&gt;&lt;/button&gt;

    【讨论】:

    • 不管你提不提,表单标签内的按钮默认是提交类型。如果您需要避免提交行为,则需要将其显式更改为 type button
    • 在这里查看 vicky gonsalves 的答案stackoverflow.com/questions/19454310/…
    猜你喜欢
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 2018-03-19
    • 1970-01-01
    相关资源
    最近更新 更多