2

我需要遍历从我的控制器返回的 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 函数时返回结果的方式。

关于从作业数组中获取第一个元素的任何想法?

问候,

萨布

4

1 回答 1

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;
}
于 2012-08-02T19:59:20.437 回答