Ajax e Asp.net MVC返回“结果未定义”

时间:2017-02-15 12:57:27

标签: javascript ajax asp.net-mvc

使用Javascript:

$(function () {
    $("#btEmail").click(function () {
        var name = $("#username").val();

        $.post("@Url.Action("SearchUserByUsername", "LogonWorkFlow")", { username: name }, function (result) {
            var r = result;

        });
    });
});

Controller MVC:

[HttpPost]
        public ActionResult SearchUserByUsername(string username)
        {
            return Json(GetUserByEmail(username), JsonRequestBehavior.AllowGet);
        }

public async Task<JsonResult> GetUserByEmail(string email)
        {
            var u = await userManager.FindByEmailAsync(email);

            var user = new { mail = u.Email, n = u.FullName };

            return Json(user, JsonRequestBehavior.AllowGet);
        }

请求通常按函数传递,但返回始终为空

1 个答案:

答案 0 :(得分:2)

您没有重新调整字符串,而是返回任务。哪个JSON序列化程序不知道如何处理,哪些没有有意义的字符串表示返回给客户端。 SearchUserByUsername也应为async。类似的东西:

public async Task<ActionResult> SearchUserByUsername(string username)
{
    return Json(await GetUserByEmail(username), JsonRequestBehavior.AllowGet);
}

这样它就可以等待GetUserByEmail的调用,async

虽然GetUserByEmail 已经返回JsonResult,但您可以(也可能应该)简化:

public async Task<ActionResult> SearchUserByUsername(string username)
{
    return await GetUserByEmail(username);
}

当然,在这一点上,它首先引出了为什么你真的需要SearchUserByUsername操作的问题,因为它只是对现有操作的传递。