Javascript ViewData不是';t正在通过Jquery显示

Javascript ViewData不是';t正在通过Jquery显示,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,我脑子一片空白,似乎找不到解决办法,但我相信这很简单 我有一个控制器,它有6个ViewData,这个动作是从jqueryajax请求调用的,然后我想将这些项输入到各种文本框中 JQuery $("#tableid").click(function () { ///EXTRACT DATA FROM TABLE ROW var insertText = $(this).text(); $.a

我脑子一片空白,似乎找不到解决办法,但我相信这很简单

我有一个控制器,它有6个
ViewData
,这个动作是从jquery
ajax
请求调用的,然后我想将这些项输入到各种
文本框中

JQuery

$("#tableid").click(function () {                
      ///EXTRACT DATA FROM TABLE ROW
                var insertText = $(this).text();
                $.ajax({
                    url: '@Url.Action("UserDetails", "Home")',
                    data: { 'userLogin': insertText },
                    type: "post",
                    cache: false,
                    success: function () { <===== PROBLEM SOMEWHERE IN THIS FUNCTION
                        var userID = ViewData["userID"];
                        var userName = ViewData["userName"];
                        var userFName = ViewData["userFName"];
                        var userSName = ViewData["userSName"];
                        var userEmail = ViewData["userEmail"];
                        var userActive = ViewData["userActive"];
                        $('#txtUL').empty().append(userID)
                        $('#txtUI').empty().append(userName)
                        $('#txtFN').empty().append(userFName)
                        $('#txtSN').empty().append(userSName)
                        $('#txtE').empty().append(userEmail)
                        $('#txtA').empty().append(userActive)
                    }
                });
            });
    });

调试时,
ViewData
字段都填充在控制器中,因此它必须是Jquery,谢谢,如果您有任何问题,请询问。(我适当地缩短了一些代码。

jQuery正在进行Ajax调用,因此您无法访问
ViewData
对象。
为什么不从控制器返回json对象

public JsonResult UserDetails(string userLogin)
{
    if (string.IsNullOrEmpty(userLogin))
    {
    return Json(new {});
    }

    Manager manager = new Manager();
    var details = manager.GetUserData(userLogin);

    if (details != null)
    {
       return Json(new {userID = details.Id, userName = details.Login, userFName = details.FirstName, userSName = details.Surname, userEmail = details.Email = details.Active});
    }

    return Json(new {});

}
如您所见,控制器现在返回一个
JsonResult

您的javascript应该如下所示:

$.ajax({
    url: '@Url.Action("UserDetails", "Home")',
    data: { 'userLogin': insertText },
    type: "POST",
    dataType: 'json',
    cache: false,
    success: function (data) { 
        if (!jQuery.isEmptyObject(data)) {
            $('#txtUL').empty().append(data.userID)
            $('#txtUI').empty().append(data.userName)
            $('#txtFN').empty().append(data.userFName)
            $('#txtSN').empty().append(data.userSName)
            $('#txtE').empty().append(data.userEmail)
            $('#txtA').empty().append(data.userActive)
        }
    }
})
我添加了
数据类型:“json”
,因为您需要一个json对象。 我的控制器返回一个空对象以防出错。 您可以使用
jQuery.isEmptyObject(data)
检查它


现在,您的
success
回调应该会收到控制器返回的对象。

jQuery正在进行Ajax调用,因此您无法访问
ViewData
对象。
为什么不从控制器返回json对象

public JsonResult UserDetails(string userLogin)
{
    if (string.IsNullOrEmpty(userLogin))
    {
    return Json(new {});
    }

    Manager manager = new Manager();
    var details = manager.GetUserData(userLogin);

    if (details != null)
    {
       return Json(new {userID = details.Id, userName = details.Login, userFName = details.FirstName, userSName = details.Surname, userEmail = details.Email = details.Active});
    }

    return Json(new {});

}
如您所见,控制器现在返回一个
JsonResult

您的javascript应该如下所示:

$.ajax({
    url: '@Url.Action("UserDetails", "Home")',
    data: { 'userLogin': insertText },
    type: "POST",
    dataType: 'json',
    cache: false,
    success: function (data) { 
        if (!jQuery.isEmptyObject(data)) {
            $('#txtUL').empty().append(data.userID)
            $('#txtUI').empty().append(data.userName)
            $('#txtFN').empty().append(data.userFName)
            $('#txtSN').empty().append(data.userSName)
            $('#txtE').empty().append(data.userEmail)
            $('#txtA').empty().append(data.userActive)
        }
    }
})
我添加了
数据类型:“json”
,因为您需要一个json对象。 我的控制器返回一个空对象以防出错。 您可以使用
jQuery.isEmptyObject(data)
检查它


现在,您的
success
回调应该会收到控制器返回的对象。

jQuery正在进行Ajax调用,因此您无法访问
ViewData
对象。
为什么不从控制器返回json对象

public JsonResult UserDetails(string userLogin)
{
    if (string.IsNullOrEmpty(userLogin))
    {
    return Json(new {});
    }

    Manager manager = new Manager();
    var details = manager.GetUserData(userLogin);

    if (details != null)
    {
       return Json(new {userID = details.Id, userName = details.Login, userFName = details.FirstName, userSName = details.Surname, userEmail = details.Email = details.Active});
    }

    return Json(new {});

}
如您所见,控制器现在返回一个
JsonResult

您的javascript应该如下所示:

$.ajax({
    url: '@Url.Action("UserDetails", "Home")',
    data: { 'userLogin': insertText },
    type: "POST",
    dataType: 'json',
    cache: false,
    success: function (data) { 
        if (!jQuery.isEmptyObject(data)) {
            $('#txtUL').empty().append(data.userID)
            $('#txtUI').empty().append(data.userName)
            $('#txtFN').empty().append(data.userFName)
            $('#txtSN').empty().append(data.userSName)
            $('#txtE').empty().append(data.userEmail)
            $('#txtA').empty().append(data.userActive)
        }
    }
})
我添加了
数据类型:“json”
,因为您需要一个json对象。 我的控制器返回一个空对象以防出错。 您可以使用
jQuery.isEmptyObject(data)
检查它


现在,您的
success
回调应该会收到控制器返回的对象。

jQuery正在进行Ajax调用,因此您无法访问
ViewData
对象。
为什么不从控制器返回json对象

public JsonResult UserDetails(string userLogin)
{
    if (string.IsNullOrEmpty(userLogin))
    {
    return Json(new {});
    }

    Manager manager = new Manager();
    var details = manager.GetUserData(userLogin);

    if (details != null)
    {
       return Json(new {userID = details.Id, userName = details.Login, userFName = details.FirstName, userSName = details.Surname, userEmail = details.Email = details.Active});
    }

    return Json(new {});

}
如您所见,控制器现在返回一个
JsonResult

您的javascript应该如下所示:

$.ajax({
    url: '@Url.Action("UserDetails", "Home")',
    data: { 'userLogin': insertText },
    type: "POST",
    dataType: 'json',
    cache: false,
    success: function (data) { 
        if (!jQuery.isEmptyObject(data)) {
            $('#txtUL').empty().append(data.userID)
            $('#txtUI').empty().append(data.userName)
            $('#txtFN').empty().append(data.userFName)
            $('#txtSN').empty().append(data.userSName)
            $('#txtE').empty().append(data.userEmail)
            $('#txtA').empty().append(data.userActive)
        }
    }
})
我添加了
数据类型:“json”
,因为您需要一个json对象。 我的控制器返回一个空对象以防出错。 您可以使用
jQuery.isEmptyObject(data)
检查它


现在,您的
success
回调应该会接收控制器返回的对象。

您不需要编写
JsonRequestBehavior.DenyGet
,这是默认设置behavior@teovankot:我不知道。谢谢:-)完美的代码,根据teo的建议,运行非常顺利,谢谢,伙计们,错误检查使这很容易+1@hjardine:很高兴我帮了忙。干杯。您不需要编写
JsonRequestBehavior.DenyGet
,这是默认设置behavior@teovankot例如我不知道。谢谢:-)完美的代码,根据teo的建议,运行非常顺利,谢谢各位p.s错误检查使这变得很容易+1@hjardine:很高兴我帮了忙。干杯。您不需要编写
JsonRequestBehavior.DenyGet
,这是默认设置behavior@teovankot例如我不知道。谢谢:-)完美的代码,根据teo的建议,运行非常顺利,谢谢各位p.s错误检查使这变得很容易+1@hjardine:很高兴我帮了忙。干杯。您不需要编写
JsonRequestBehavior.DenyGet
,这是默认设置behavior@teovankot例如我不知道。谢谢:-)完美的代码,根据teo的建议,运行非常顺利,谢谢各位p.s错误检查使这变得很容易+1@hjardine:很高兴我帮了忙。干杯