2010-04-08 104 views
0

函数socialbookmarksTableData(data)被另一个函数调用来生成一个表的内容 - data是一个JSON对象。在函数内部,我调用2个使用getJSON和POST(以json作为返回对象)的其他函数来获取一些数据。问题是:虽然函数正确执行,但我得到了2个变量(bookmarkingSites,bookmarkCategories)的未定义值。请帮助解决方案。jquery控件执行回调函数

function socialbookmarksGetBookmarkCategories(bookmarkID) 
    { 
     var toReturn = ''; 
     $.post("php/socialbookmark-get-bookmark-categories.php",{ 
      bookmarkID: bookmarkID 
     },function(data){ 
      $.each(data,function(i,categID){ 
       toReturn += '<option value ="' + data[i].categID + '">' + data[i].categName + '</option>'; 
      }) 
      return toReturn; 
     },"JSON"); 
    } 

    function socialbookmarksGetBookmarkSites() 
    { 
     var bookmarkingSites = ''; 
     $.getJSON("php/socialbookmark-get-bookmarking-sites.php",function(bookmarks){ 

      for(var i = 0; i < bookmarks.length; i++){ 
       //alert(bookmarks[i].id); 
       bookmarkingSites += '<option value = "' + bookmarks[i].id + '">' + bookmarks[i].title + '</option>'; 
      } 
      return bookmarkingSites; 
     }); 
    } 
    function socialbookmarksTableData(data) 
    { 
     var toAppend = ''; 
     var bookmarkingSites = socialbookmarksGetBookmarkSites(); 


     $.each(data.results, function(i, id){ 

      var bookmarkCategories = socialbookmarksGetBookmarkCategories(data.results[i].bookmarkID); 
    //rest of the code is not important 
     }); 
    $("#searchTable tbody").append(toAppend); 
} 

回答

0

您从回调函数中返回变量,而不是实际调用的函数。在调用回调函数后,控制权返回给没有返回语句的函数,所以默认情况下它们'返回'未定义。您需要从socialbookmarksGetBookmarkCategories和socialbookmarksGetBookmarkSites中返回值,而不仅仅是来自其中的回调函数。

+0

现在我得到一个空字符串。 – user253530 2010-04-08 04:51:50

0

您需要执行socialbookmarksTableData函数中的代码作为对$.getJSON调用的响应。问题是你马上回来,但JSON回调尚未开始。