jquery控制执行回调函数

时间:2010-04-08 04:34:21

标签: javascript jquery-ui jquery

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

    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);
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您需要执行socialbookmarksTableData函数中的代码作为对$.getJSON调用的响应。问题是你马上回来了,但JSON回调还没有解决。