如何将C#对象传递给$ .ajax

时间:2013-07-15 11:30:57

标签: c# javascript jquery ajax asp.net-mvc

我有简单的JavaScript代码,我希望从控制器中获取一个对象并在脚本中解析它,但在脚本中,我无法访问该对象的任何属性。

我的对象(在控制器中):

public class userData
{
    public string firstName { get; set; }
    public string lastName { get; set; }
    public string state { get; set; }
    public bool success { get; set; }
}

脚本:

function  load()
{
    var sender = {
         userNo : $("#userNo").val(),
    }
    $.ajax({
        type : "POST",
        url : "testGetUser",
        data : sender,
        success:function(data)
            {
                if(1)
                {
                    $("#section #result0").html(data.firstName);
                    $("#section #result1").html(data.lastName);
                    $("#section #result2").html(data.state);
                    $("#section").slideDown().delay(1000).slideUp();
                }
            }
    });
}

控制器:

[HttpPost]
public userData testGetUser(long userNo)
{
    userData result = new userData();

    result.firstName = Session["firstName"].ToString();
    result.lastName = Session["lastName"].ToString();
    result.state = Session["country"].ToString();
    result.success = true;

    return result;
}

1 个答案:

答案 0 :(得分:5)

在控制器中,使用:

[HttpPost]
public JsonResult testGetUser(long userNo)
{
    userData result = new userData();

    result.firstName = Session["firstName"].ToString();
    result.lastName = Session["lastName"].ToString();
    result.state = Session["country"].ToString();
    result.success = true;

    return Json(result);
}

您似乎没有使用变量userNo,因此最好使用这样的GET请求:

public JsonResult testGetUser(/*remove parameter*/)
{
    userData result = new userData();

    result.firstName = Session["firstName"].ToString();
    result.lastName = Session["lastName"].ToString();
    result.state = Session["country"].ToString();
    result.success = true;

    return Json(result, JsonRequestBehavior.AllowGet);
}

JavaScript现在想成为这样:

function  load()
{
    $.ajax({
        type : "GET",
        url : "testGetUser",
        success:function(data) {
            $("#section #result0").html(data.firstName);
            $("#section #result1").html(data.lastName);
            $("#section #result2").html(data.state);
            $("#section").slideDown().delay(1000).slideUp();
        }
    });
}