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 に答える