2012-07-06 34 views
1

我正在使用MVC4構建一個POC。我有一些jQuery json調用2個不同的MVC控制器。我需要第二個人等到第一個完成之前完成,因爲第二個需要在第一個創建的cookie。 GetUserItem應該首先運行,並在完成時運行GetMoreFeedItems。多個JQuery getJSON調用MVC控制器不同步執行

這裏是我的代碼片段:

var pageNumber = 0; 
var feedCount = -1; 
var itemsLoaded = 0; 
var resultsPerPage = 10; 
var loadingData = false; 

$(document).ready(function() { 

    GetUserItem(); 
}); 


function GetUserItem() { 

    $.getJSON('/controllers/User/', function (result) { 

     var root = $.parseJSON(result); 
     var user = root["root"]; 

     $.each(user, function (i, item) { 
      $('#user-container').append('<div style="border-bottom: 1px solid black; height:25px;">Id: ' + item.uid + '<br/>' + '</div>'); 
      $('#user-container').append('<div style="border-bottom: 1px solid black; height:25px;">Username: ' + item.username + '<br/>' + '</div>'); 
      $('#user-container').append('<div style="border-bottom: 1px solid black; height:25px;">Name: ' + item.first_name + " " + item.last_name + '<br/>' + '</div>'); 
      $('#user-container').append('<div style="border-bottom: 1px solid black; height:25px;">Birthday: ' + item.birthday + '<br/>' + '</div>'); 
      $('#user-container').append('<div style="border-bottom: 1px solid black; height:125px;">Profile Pic: <img alt="' + item.username + '" src="' + item.pic_small + '" /><br/>' + '</div>'); 
     }); 

    }); 

    GetMoreFeedItems();  
} 

function GetMoreFeedItems() { 
    if (feedCount == -1 || itemsLoaded < feedCount) { 

     if (loadingData === false) { 
      loadingData = true; 

      //Add loading spinner 
      $('#feed-container').append('<div id="loader" style="height:20px; background-image:url(Images/loading_gray.gif);background-repeat:repeat-x;"></div>'); 

      $.getJSON('/controllers/Feed/' + pageNumber + '/' + resultsPerPage, function (result) { 

       feedCount = result.substring(0, result.indexOf(',')); 

       var feed = $.parseJSON(result.substr(result.indexOf(',') + 1)); 

       $.each(feed, function (i, item) { 
        if (item.itemtype === "checkin") 
         $('#feed-container').append(buildOne(item)); 
        else if (item.itemtype === "like") 
         $('#feed-container').append(buildTwo(item)); 
        else if (item.itemtype === "post") 
         $('#feed-container').append(buildThree(item)); 
        else if (item.itemtype === "message") 
         $('#feed-container').append(buildFour(item)); 
        else if (item.itemtype === "story") 
         $('#feed-container').append(buildFive(item)); 
       }); 

       loadingData = false; 
       itemsLoaded += resultsPerPage; 

       //Remove loading spinner 
       $('#loader').remove(); 
      }); 
     } 
    } 
} 

回答

3

把呼叫GetMoreFeedItems()成功函數內的$.getJSON()

function GetUserItem() { 

    $.getJSON('/controllers/User/', function (result) { 

     var root = $.parseJSON(result); 
     var user = root["root"]; 

     $.each(user, function (i, item) { 
      $('#user-container').append('<div style="border-bottom: 1px solid black; height:25px;">Id: ' + item.uid + '<br/>' + '</div>'); 
      $('#user-container').append('<div style="border-bottom: 1px solid black; height:25px;">Username: ' + item.username + '<br/>' + '</div>'); 
      $('#user-container').append('<div style="border-bottom: 1px solid black; height:25px;">Name: ' + item.first_name + " " + item.last_name + '<br/>' + '</div>'); 
      $('#user-container').append('<div style="border-bottom: 1px solid black; height:25px;">Birthday: ' + item.birthday + '<br/>' + '</div>'); 
      $('#user-container').append('<div style="border-bottom: 1px solid black; height:125px;">Profile Pic: <img alt="' + item.username + '" src="' + item.pic_small + '" /><br/>' + '</div>'); 
     }); 

     GetMoreFeedItems();  


    }); 

} 
+2

這,如果它在回調中,它會在另一個完成時運行。 – TheZ 2012-07-06 20:44:28

+0

有趣我最初是這麼想的,並且一直在收到錯誤。顯然這不是錯誤的原因,因爲它現在工作正常。 – Rhonda 2012-07-06 20:52:21