2012-03-21 56 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