如何从ajax调用中获取两个对象并进行比较?

时间:2012-03-21 19:37:30

标签: jquery ajax

我需要帮助获取两个数据并进行比较。

我在这里想要创建的是一个用于将群组与员工相关联的系统。在员工的详细信息页面上,用户有一个显示弹出窗口的按钮。在此弹出窗口中,有一个员工可以关联的组列表。列表(复选框输入排列为按钮组)将填充所有组,然后我希望将每个与该员工关联的组进行检查,以便突出显示。

我正在尝试使用以下代码完成此操作(但失败):

function loadAllGroups() {
var iGroupID;
var iGroupName;
$.ajax({
    type: 'POST',
    url: '../Processes/process_Groups.aspx/GetGroups',
    contentType: 'application/json; charset=utf-8',
    data: '{}',
    dataType: 'json',
    success: function (aData) {
        var AllGroups = aData.d;
        var EmployeeGroups;
        $.ajax({
            type:   'POST',
            url: '../Processes/process_Groups.aspx/GetGroupsPerEmployee',
            contentType: 'application/json; charset=utf-8',
            data: '{EmployeeID: ' + EmployeeID + '}',
            dataType: 'json',
            success:
                function (eData) {
                    EmployeeGroups = eData.d;
                },
            error:
                function (jqXHR, textStatus, errorThrown) { errorBox.append(jqXHR.responseText); } 
        });
        $.each(AllGroups, function (aIndex, aGroup) {
            var iChecked = '';
            $.each(aGroup, function (aKey, aVal) {
                if (aKey == 'GroupID') { iGroupID = aVal }
                if (aKey == 'GroupName') { iGroupName = aVal }
            });
            $.each(EmployeeGroups, function (eIndex, eGroup) {
                $.each(eGroup, function (eKey, eVal) {
                    if (eKey == 'GroupID') {
                        if (iGroupID == eVal) { iChecked = 'checked="checked"' } else { iChecked = '' }
                    }
                });
            });
        GroupsList.append('<input type="checkbox" id="Group_' + iGroupID + '" value="' + iGroupID + '" ' + iChecked + ' /><label for="Group_' + iGroupID + '">' + iGroupName + '</label>');
        });
        GroupsList.buttonsetv();
    },
    error:
        function (jqXHR, textStatus, errorThrown) { errorBox.append(jqXHR.responseText); }
});
}

我假设在ajax调用中进行ajax调用是No-No。我只是不知道如何访问每个ajax调用返回的两个数据对象,以便比较它们。

1 个答案:

答案 0 :(得分:1)

只需将内部ajax调用和'EmployeeGroups'变量移出第一个ajax调用,并在第一个变量声明后将其置于顶部。这应该仍然可以实现相同,只是没有令人讨厌的ajax开始。