循环从控制器返回的json数据

时间:2012-08-02 16:40:19

标签: jquery asp.net-mvc-3 c#-4.0

我需要遍历从控制器返回的json对象。

我的控制器代码

    public ActionResult GetJobs()
    {
        var jobs = new JobConfig().getJobs(User.Identity.Name);

        return Json(jobs.ToList(),JsonRequestBehavior.AllowGet);

    }

我的javascript代码

$(document).ready(function () {


    $('#search').click(function () {


        $.when(
            getUser(), //Get User Details
            getJobs()//Get Jobs
          ).then(process);

    });

});

function getUser() {

    return $.ajax({
        type: 'GET',
        url: '/ManageUsers/GetUser',
        data: { UserName: $('#txtUser').val() },
        dataType: 'json'
    });
}

function getJobs() {

      return $.ajax({
        type: 'GET',
        url: '/ManageUsers/GetJobs',
        dataType: 'json'
    });
}

function process(user,jobs) {

    //Show the user here

    if (user[0].Name != null) {


        var list = '<p> User : ' + user[0].Name + '<br/>';
        list += 'Email : ' + user[0].Email + '<br/>';
        list += 'Role : ' + user[0].Role + '<br/>';
        list += 'UserData : ' + user[0].UserData;
        list += '</p><br/>';


        alert(jobs.length);

        $('#user').empty();
        $('#user').append(list);



    }
    else {
        $('#user').empty();
        $('#user').append('User not exists');
    }
}

alert(jobs.length)表示长度为3,因为作业对象看起来像这样

jobs: Array[3]
0: Array[1]
1: "success"
2: Object

但我只关心0元素。

我认为使用return $ .ajax函数返回结果的方式。

关于从jobs数组中获取第一个元素的想法吗?

此致

Sab的

1 个答案:

答案 0 :(得分:0)

var someReturnedData = [{"JobId":"ArtListLoad","JobDesc":"GOLD Article List Load","JobFilePrefix":null,"JobFileSrcDir":null,"JobFileDataDir":null,"JobFileEx‌​tension":null,"JobFileDataRange":null,"JobScript":null}]

根据您从动作结果返回的示例给出一个JSON数据对象,您可以使用以下命令访问第一个元素:

someReturnedData[0]

如果你想要“JobId”,你可以通过以下方式访问它:

someReturnedData[0].JobId

编辑:

根据您的评论,您可以修改GetJobs函数以包含成功处理程序。执行您需要处理的内容,然后将该对象返回到您的过程函数。也许是这样的:

function getJobs() {

    var jobs;

    $.ajax({
        type: 'GET',
        url: '/ManageUsers/GetJobs',
        dataType: 'json',
        success: function(data) {
           jobs = data[0];
        }
    });

    return jobs;
}