函数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);
}
答案 0 :(得分:0)
您从回调函数返回变量,而不是您实际调用的函数。在调用回调函数之后,控制权返回给没有返回语句的函数,因此默认情况下它们“返回”未定义。您需要从socialbookmarksGetBookmarkCategories和socialbookmarksGetBookmarkSites返回值,而不仅仅是来自其中的回调函数。
答案 1 :(得分:0)
您需要执行socialbookmarksTableData
函数中的代码作为对$.getJSON
调用的响应。问题是你马上回来了,但JSON回调还没有解决。