我将回调函数中的json数据解析为函数参数时遇到了问题。
调用函数buildUL(ul,getJsonData());是因为getJsonData();不要返回json数据。它有它自己的回报。
如何以正确的方式编写回调函数?
function getJsonData()
{
$.ajax({
async: false,
url: 'ajax/menu.json',
success: buildData
});
// return false;
}
;
function buildData(jsonData) {
var data = jsonData;
//alert(data);
var source = [];
var items = [];
// build hierarchical source.
for (i = 0; i < data.length; i++) {
var item = data[i];
var label = item["text"];
var parentid = item["parentid"];
var id = item["id"];
if (items[parentid]) {
var item = {parentid: parentid, label: label, item: item};
if (!items[parentid].items) {
items[parentid].items = [];
}
items[parentid].items[items[parentid].items.length] = item;
items[id] = item;
}
else {
items[id] = {parentid: parentid, label: label, item: item};
source[id] = items[id];
}
}
return source;
}
;
function buildUL(parent, items) {
$.each(items, function () {
if (this.label) {
// create LI element and append it to the parent element.
var li = $("<li>" + this.label + "</li>");
li.appendTo(parent);
// if there are sub items, call the buildUL function.
if (this.items && this.items.length > 0) {
var ul = $("<ul></ul>");
ul.appendTo(li);
buildUL(ul, this.items);
}
}
});
}
;
var ul = $("<ul></ul>");
ul.appendTo("#testmenu");
buildUL(ul, getJsonData());
错误:TypeError:a未定义
答案 0 :(得分:0)
答案很简单,因为请求创建了命名空间,并且数据不能通过函数成功返回。 那你应该这样做:
$.ajax({
url: 'ajax/menu.json',
success: function(response){
//here I do that I want with data from response
//sample:
$('#username').text(response['username']);
alert(response['username']);
}
});