2012-03-21 35 views
0

我需要帮助获取两段数据,并对它们进行比较。如何从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调用一个没有没有。我只是不知道如何访问每个ajax调用返回的两个数据对象,以便比较它们。

+0

我没有看到另一个Ajax调用第一个成功的可能是一个问题?有什么错误? – RTulley 2012-03-21 19:42:52

+0

@RTully我正在将EmployeeGroups返回为'undefined',我认为它与GetGroupsPerEmployee ajax调用是否在执行下面的代码之前返回了一个值有关。 – MarkieB 2012-03-22 17:59:31

回答

1

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

+0

这似乎比以前有更好的结果,尽管随机不会加载任何组。我仍然认为有一个问题取决于其中一个ajax调用是否在执行后续代码之前返回一个值。 – MarkieB 2012-03-22 18:03:00

+0

确保ajax调用也正在返回一些东西(可能只是为了确保提供一个快速警报)。如果你想100%确定ajax在另一个调用完成之前没有运行,请暂停一条语句或者足够长的时间让第一个完成。我知道我在使用速度较慢的移动设备时出现了一次错误,我必须等待250毫秒才能正确渲染。让我知道事情的后续! – 2012-03-26 22:19:38