【问题标题】:I keep getting HttpGet Again and Again我不断收到 HttpGet 一次又一次
【发布时间】:2016-10-20 12:47:07
【问题描述】:

我的问题是我有一个登录页面,很简单,我正在获取用户名和密码。我在服务器端控制它。我正在使用 javascript 将数据视图传递给控制器​​。但问题是它总是将我发送到同一页面。我总是输入用户名和密码,但即使数据正确,也没有重定向。

我的查看代码,

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Yelken Otel Rezervasyon Kontrol Sistemi</title>
    <script type="text/javascript">
        function Login() {
            var userName = document.getElementById("userName").value;
            var password = document.getElementById("password").value;
            $.ajax({
                type: 'POST',
                url: '/RezervasyonTalepleri/Giris',
                dataType: 'json',
                data: {
                    'userName': userName,
                    'password': password
                },
                success: function (msg) {
                    location.href = '/RezervasyonTalepleri/Denetim';
                }
            });
        };
    </script>
</head>
<body>
    <div class="login-page">
        <div class="form">
            <form class="login-form">
                <input id="userName" type="text" placeholder="username" />
                <input id="password" type="password" placeholder="password" />
                <button id="btnLogin" onclick="Login()" >login</button>
            </form>
        </div>
    </div>
</body>
</html>

我的控制器代码,

[HttpGet]
public ActionResult Giris()
{
    return View();
}

[HttpPost]
public ActionResult Giris(string userName, string password)
{
    if(userName=="admin" && password == "123")
    { 
        return Json(new { status = "success" });
    }
    else
    {
        return JavaScript("Yanlış Kullanıcı Adı veya Şifre Girdiniz.");
    }
}

我希望当我输入正确的用户名和密码时,它应该将我重定向到/RezervasyonTalepleri/Denetim,但它总是将我重定向到/RezervasyonTalepleri/Giris

【问题讨论】:

  • 您可能没有正确登录,或者您需要删除 cookie。首先尝试使用浏览器手动清除 IE 历史记录。如果这不起作用,我建议使用 fiddler 来捕获结果以进行调试。如果您可以使用 IE 登录,则比较 IE 和您的应用程序之间的提琴手结果。通常问题在于第一条请求消息中的 HTTP 标头。
  • ajax 的全部目的是保持在同一页面上,因此进行 ajax 调用然后重定向是没有意义的。只需在 POST 方法中进行正常提交和重定向即可。

标签: javascript c# html asp.net-mvc view


【解决方案1】:

您需要 jQuery 库,例如包含如下:

<title>Yelken Otel Rezervasyon Kontrol Sistemi</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script type="text/javascript"> ...

【讨论】:

  • 如果是这种情况,AJAX 将永远不会执行——但为什么页面会重新加载?他似乎在表单中有一个按钮,但没有提交元素——所以表单不会被提交,对吗?
  • 当他点击登录时,登录函数将成功调用,但由于他没有包含JQuery库,他将得到Uncaught TypeError: Cannot read property 'ajax' of undefined并且表单将提交到同一页面
【解决方案2】:

如果我正确理解了您的问题,


success 函数在 Giris Action 调用成功时调用,而不是在您以 status 返回成功时调用。

在您的示例中,您需要检查 msg.status 是否等于 success 并且您准备好了。

所以你的success 函数是

success: function (msg) {
                if (msg.status === 'success')
                {
                    location.href = '/RezervasyonTalepleri/Denetim';
                }
            }

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 2012-09-02
    • 2015-08-23
    • 2017-04-13
    • 1970-01-01
    • 2021-07-07
    相关资源
    最近更新 更多