2016-08-15 83 views
0

我有以下功能:AJAX結果不填充元素立即

function getVenues(categoryId) { 
        var venues = ""; 
        $.getJSON('@Url.Action("GetVenues", "Team")' + "?categoryId=" + categoryId, function (data) { 
         success: $.each(data, function (a, b) { 
          venues += "<option value='" + b.Value + "'>" + b.Text + "</option>"; 
         }); 
         $('#venuelist').html(venues); 
        }); 
        var venueId= $('#venuelist').val(); 
        getVenueNotes(categoryId, venueId); 
       }; 

的問題是,不是立即被填充的下拉列表時,$(「#venuelist」)HTML(場地);叫做。所以沒有這個,我無法獲得valueId傳遞給下一個getVenueNotes()函數。然而,當我讓它運行時,下拉列表正在填充。當調試並通過深jQuery代碼步進,它得到約15步之後,通過填充在這個很長的代碼行的開頭爲:

}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++W..... 

所以我猜有什麼做的readyState,但如何暫停執行我的功能,直到數據被帶入?

回答

0

得到它的工作通過這樣的做()方法​​連接到.getJSON():

function getVenues(categoryId) { 
        var venues = ""; 
        $.getJSON('@Url.Action("GetVenues", "Team")' + "?categoryId=" + categoryId, function(data) { 
         success: $.each(data, function(a, b) { 
          venues += "<option value='" + b.Value + "'>" + b.Text + "</option>"; 
         }); 
        }).done(function() { 
         $('#venuelist').html(venues); 
         var venueId = $('#venuelist').val(); 
         getVenueNotes(categoryId, venueId); 

        }); 


       };