My main issue is that buildItem(data) returns 'undefined'. I've gone through some links on stackoverflow about how to do callback functions but I think that it's getting a bit messy since I'm going through multiple functions here.
I have a list that I'm appending to in this ajax call.
$.ajax({
    dataType: "json,
    url: "/retrieveTeamView.do?managerEmail=${email}",
    cache: false,
    success: function (data, status) {
        $('#nestable ol').append(buildItem(data));
    });
I defined buildItem() as such:
function buildItem(item) {
    getTotalCost(item, function(totalCost) {
        html += "<span>" + totalCost + "</span>";
        return html;
    }
 }
So all buildItem does is it takes the data and passes it into getTotalCost.
Here my getTotalCost() function should take the item, as it has an attribute "email" that I need for the url, and it should do a loop through the data retrieved from the ajax call to return a totalCost.
function getTotalCost(item, callback) {
    $.ajax({
        dataType: "json",
        url: "/retrieveUserUsage.do?email=" + item.email,
        success: function(data) {
            var totalCost = 0;
            for (var i = 0; i < data.length; i++) {
                totalCost += parseFloat(data[i].cost);
            }
            callback(totalCost);
        }
    });
}
My understanding is that callback(totalCost) returns back to buildItem() and returns the total cost successfully. From what I understand, doing alert(html) gives me a correct output in the alert dialog, but it is not successfully appended in the ajax function. Am I doing something wrong?
Note: I deleted chunks of details to keep the idea but to still keep the code secretive, so sorry if some parts may not seem like they're used.
 
    