c# - Ajax 成功函数返回空数据

标签 c# jquery ajax asp.net-mvc-4

我正在尝试通过 ajax 导航我的请求。

当用户通过身份验证时,它会转到另一个 ajax 成功函数的 url -

success:function(data,result)
{
window.location.url='@Url.Action("Home","Index");
}

我的 Controller 是-

 public void _LoginPartial(LoginModel login) {
            try {

                var system = (from u in db.RegisterLedgers
                              where u.EmailID == login.EmailID && u.RegisteredPassword == login.PaSsWoRd
                              select u).FirstOrDefault();
                if (system != null) {

                    Session["LoggedInUser"] = system;
                    FormsAuthentication.SetAuthCookie(system.RegisteredName, false);
                }
            }
            catch (Exception ex) {
                ModelState.AddModelError("", ex);
            }
        }

Ajax 查询是-

<script type="text/javascript">
    $(function () {
        $('#Login-button').click(function () {
            $.ajax({
                url: '/loginledger/_loginpartial/',
                data: $('#form-loginpartial').serialize(),
                type: 'post',
                success: function (data, result) {
                    alert(result);
                    alert(data);
                },
                error: function () {
                    alert("Form couldn't be submitted");
                }

            });

        });

    });

</script>

显示ajax查询成功,但数据为空。我在服务器端检查了这个请求,它从数据库中提取了记录。

为什么我在 ajax 成功函数中得到空结果?我在这里做错了什么?

最佳答案

What did I do wrong here?

您的 Controller 操作似乎没有返回任何内容。这只是一个 void。在 ASP.NET MVC Controller 中,操作必须返回 ActionResults。

例如,您可以使用 JsonResult

public ActionResult _LoginPartial(LoginModel login) 
{
    try 
    {
        var system = 
            (from u in db.RegisterLedgers
            where u.EmailID == login.EmailID && u.RegisteredPassword == login.PaSsWoRd
            select u).FirstOrDefault();

        if (system != null) 
        {
            Session["LoggedInUser"] = system;
            FormsAuthentication.SetAuthCookie(system.RegisteredName, false);
            return Json(new { success = true; });
        }
    }
    catch (Exception ex) 
    {
        ModelState.AddModelError("", ex);
    }

    return Json(new { success = false; });
}

您可以在 AJAX 成功回调中查看:

success: function (data) {
    alert(data.success);
}

关于c# - Ajax 成功函数返回空数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20217211/

相关文章:

c# - 无法遍历 gridview 列(自动生成)?

c# - 格式化字典的键值

javascript - AJAX div内容不自动调整页面高度

jquery - 替换元素后点击事件不起作用

javascript - 即使绑定(bind)后,this.setState 也不会设置状态 `this`

ajax - 从 Flash 迁移到 HTML5/CSS/等

javascript - AJAX 调用错误 - 状态 400(错误请求)

c# - 我想将现有的 List<T> 保存到 c# 中的 XML 文件中

javascript - 打开隐藏的 iframe 以在文档准备好时下载文件

c# - 获取方法的集合