【问题标题】:My jQuery working but callback is not working on the first time我的 jQuery 工作但回调第一次没有工作
【发布时间】:2018-12-14 00:04:55
【问题描述】:

我正在做一个简单的项目来学习 jQuery。我的问题是单击按钮后,我调用了一个 jquery。它可以工作并将数据传送到控制器,但成功功能在第一次单击时不起作用。它在第二次点击时正常工作。使用我的参数,在这两个调用中,控制器中的方法返回 true。但在第一次调用时,jquery 没有在成功函数中运行,但第二次调用会。

这是我的 jquery:

function signin() {
    var parameters = {
        email: $('#emailtxt').val(),
        password: $('#passwordtxt').val()
    };
    console.log(parameters);
    $.ajax({
        url: '@Url.Action("Login","Session")',
        type: 'GET',
        data: parameters,
        dataType: 'json',
        success: function (correctData) {

            if (JSON.parse(correctData) == false) {
                alert("Incorrect e-mail or password.");
            } else if (JSON.parse(correctData) == true) {
                window.location.assign('@Url.Action("Index","Home")');
            }
        }            
    });
};

这是我在控制器中的代码:

public JsonResult Login(string email, string password)
        {
            using (var context= new ProjistDbContext())
            {
                var user = context.Users.FirstOrDefault(x => x.UserEmail == email && x.UserPassword == password);
                if (user == null)
                {
                    var result = JsonConvert.SerializeObject(false);
                    return Json(result, JsonRequestBehavior.AllowGet);
                }
                else
                {
                    Session["UserId"] = user.Id;
                    var result = JsonConvert.SerializeObject(true);
                    return Json(result, JsonRequestBehavior.AllowGet);
                }
            }
        }

我恳请您在这个问题上提供帮助。非常感谢。

【问题讨论】:

  • ajax 调用是第一次(检查网络选项卡)吗?是否得到了预期的结果(检查所选 ajax 调用上的响应选项卡)
  • 另外你也不需要JsonConvert.SerializeObject(true) 电话。只需将布尔值传递给Json 方法并从客户端删除JSON.parse
  • 感谢您的 JsonConvert 提示,是的,ajax 甚至在第一次就拨打了电话。
  • 什么是第一时间返回?添加错误: function (xhr, ajaxOptions, throwedError) { alert(xhr.status);警报(抛出错误);然后你就可以看到为什么第一次失败了。返回的是什么。
  • 你应该 console.log(correctData) 看看你的控制器返回什么

标签: javascript jquery asp.net asp.net-mvc


【解决方案1】:

我解决了我的问题,我想分享它。问题是因为... 我正在添加按钮;

<button>...</button>

这种定义是刷新页面,它在从控制器获取响应时导致错误。它有时也会出现错误,例如

XHR 加载 GET 失败...

如果我将 type="button" 添加到 html 按钮定义中,它会停止刷新页面并且所有帖子和响应都可以正常工作。

我想分享解决方案。谢谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多