2016-10-31 2 views
0

Я использую treeview для загрузки данных элементов иерархии. https://github.com/jonmiles/bootstrap-treeviewФункция обратного вызова Ajax для заполнения данных иерархии в bootstrap treeview

Выборка данных JSON для заполнения TreeView:

var json = '[' + 
       '{' + 
        '"text": "Parent 1",' + 
        '"nodes": [' + 
         '{' + 
          '"text": "Child 1",' + 
          '"nodes": [' + 
           '{' + 
            '"text": "Grandchild 1"' + 
           '},' + 
           '{' + 
            '"text": "Grandchild 2"' + 
           '}' + 
          ']' + 
         '},' + 
         '{' + 
          '"text": "Child 2"' + 
         '}' + 
        ']' + 
       '},' + 
       '{' + 
        '"text": "Parent 2"' + 
       '},' + 
       '{' + 
        '"text": "Parent 3"' + 
       '},' + 
       '{' + 
        '"text": "Parent 4"' + 
       '},' + 
       '{' + 
        '"text": "Parent 5"' + 
       '}' + 
      ']'; 

У меня есть функция AJAX, который он получит прямую вниз линию, проходя MemberID.

function getTree2(mid) { 
     $.ajax({ 
      type: "POST", 
      url: "../DataServices/ws_member.asmx/GetDirectDownlineByMemberID", 
      data: "{'memberID':'" + mid + "'}", 
      contentType: "application/json; charset=utf-8", 
      success: function (response) { 
       var str = ''; 
       var result = JSON.parse(response.d) 
       for (var i = 0; i < result.length; i++) { 
        str += '"text": "' + result[i].Name + '",' + 
          '"nodes": [' + 
         '{'; 

        str += getTree2(result[i].ID); 

        str += '}' + 
        ']'; 
       } 
       str += '}' + 
        ']'; 

       return str; 
      }, 
      dataType: "json" 
     }); 
    } 

, но следующая строка не может возвращать строку.

str += getTree2(result[i].ID); 

Как я могу выполнить функцию getTree2 в обратном вызове ajax для возврата строки?

ответ

0

Как Ajax вызов будет обрабатываться в асинхронном потоке, поэтому, если вы хотите, чтобы вернуть возвращаемую строку, вы должны пройти обратный вызов через

function getTree2(mid, callback) 

Затем в строке # 23:

return callback(str); 

Итак, чтобы добавить новую строку:

getTree2(result[i].ID, function(newStr) { 
    str += newStr; 
}); 
Смежные вопросы