jquery html() 未设置 div 内容
jquery html() not setting div contents
我正在制作我的第一个应用程序,使用 Parse.com 进行数据库存储,我正在使用 Parse JavaScript SDK 来利用这个数据库。
我正在尝试从我的一个数据库 table 中填充一个项目列表,这个 table 包含一个字段,该字段是指向另一个 class/table 的对象的指针.我需要从此对象中检索一个字段才能正确显示信息。
但是,Parse 似乎要求我从 table 上的主查询中单独请求这些对象中的每一个。无论如何,所以我发出请求并有一个成功回调,它使用 jquery 的 .html()
来设置 div 的内容,该内容由检索到的对象的 ID 标识。
问题是,工作完成后,div 变为空。虽然,奇怪的是,我尝试使用对 alert
的调用来获取成功回调中每个 div 的内容,并且内容不仅在我调用 .html()
之后是正确的,而且 before 我调用了它。不过,这可能归结为 JavaScripts 异步函数调用。
这里是有问题的函数:
function updateBudgets() {
var Budget = Parse.Object.extend("Budget");
var query = new Parse.Query(Budget);
query.equalTo("User", Parse.User.current());
//query.include(["Budget.Category"]); //I tried this to include the category object with the query response, but it didn't seem to work
query.find({
success: function(result) {
var opt = "<h2>Budgets</h2>";
var category, id;
for(var i = 0; i < result.length; i++) {
category = result[i].get("Category");
category.fetch({
success: function(cat) {
alert($('#' + cat.id).html());
$('#' + cat.id).text(cat.get("Name"));
alert($('#' + cat.id).html());
}
});
opt += makeBudget(category.id, parseFloat(result[i].get("Amount")/100), result[i].get("Balance"), result[i].id);
}
$('#budgets').html(opt);
}
});
}
我尝试了文档似乎暗示的等效于在我的查询中使用 .include()
函数的 SQL JOIN
操作,但它似乎不起作用全部.
所以,我想知道的是如何调试我的 JavaScript 以便我可以使用 .html()
绕过这种奇怪的行为,或者我如何正确地做到这一点 JOIN
使用 Parse 进行样式操作。我找到的文档并没有真正涉及很多细节。
如有任何帮助,我将不胜感激。
请将以下 "test guide" 视为评论而不是答案,因为它仅包含一些 console.log
陈述而不是您问题的实际答案.
无论如何,下面是一些我会尝试检查的问题:
- 在
query.find
之后,您是否收到来自服务器的答复?
- 检查是否从服务器获取数据(内部查询)
- 检查获取查询后是否成功接收到类别数据
- 检查是否找到具有类别 ID 的元素
- 为获取和查询添加了错误处理
我还注意到您正在使用 .text() method for setting the value. I think it'll work fine as long as the element in question is not a form input element. If that's the case, you probably have to you use .val() 方法。
我添加的 console.log
测试打印输出可以在 Fiddle 中找到 updateBudgets()
函数。 (Fiddle 已更新)希望对您有所帮助:-)
我正在制作我的第一个应用程序,使用 Parse.com 进行数据库存储,我正在使用 Parse JavaScript SDK 来利用这个数据库。
我正在尝试从我的一个数据库 table 中填充一个项目列表,这个 table 包含一个字段,该字段是指向另一个 class/table 的对象的指针.我需要从此对象中检索一个字段才能正确显示信息。
但是,Parse 似乎要求我从 table 上的主查询中单独请求这些对象中的每一个。无论如何,所以我发出请求并有一个成功回调,它使用 jquery 的 .html()
来设置 div 的内容,该内容由检索到的对象的 ID 标识。
问题是,工作完成后,div 变为空。虽然,奇怪的是,我尝试使用对 alert
的调用来获取成功回调中每个 div 的内容,并且内容不仅在我调用 .html()
之后是正确的,而且 before 我调用了它。不过,这可能归结为 JavaScripts 异步函数调用。
这里是有问题的函数:
function updateBudgets() {
var Budget = Parse.Object.extend("Budget");
var query = new Parse.Query(Budget);
query.equalTo("User", Parse.User.current());
//query.include(["Budget.Category"]); //I tried this to include the category object with the query response, but it didn't seem to work
query.find({
success: function(result) {
var opt = "<h2>Budgets</h2>";
var category, id;
for(var i = 0; i < result.length; i++) {
category = result[i].get("Category");
category.fetch({
success: function(cat) {
alert($('#' + cat.id).html());
$('#' + cat.id).text(cat.get("Name"));
alert($('#' + cat.id).html());
}
});
opt += makeBudget(category.id, parseFloat(result[i].get("Amount")/100), result[i].get("Balance"), result[i].id);
}
$('#budgets').html(opt);
}
});
}
我尝试了文档似乎暗示的等效于在我的查询中使用 .include()
函数的 SQL JOIN
操作,但它似乎不起作用全部.
所以,我想知道的是如何调试我的 JavaScript 以便我可以使用 .html()
绕过这种奇怪的行为,或者我如何正确地做到这一点 JOIN
使用 Parse 进行样式操作。我找到的文档并没有真正涉及很多细节。
如有任何帮助,我将不胜感激。
请将以下 "test guide" 视为评论而不是答案,因为它仅包含一些 console.log
陈述而不是您问题的实际答案.
无论如何,下面是一些我会尝试检查的问题:
- 在
query.find
之后,您是否收到来自服务器的答复?
- 检查是否从服务器获取数据(内部查询)
- 检查获取查询后是否成功接收到类别数据
- 检查是否找到具有类别 ID 的元素
- 为获取和查询添加了错误处理
我还注意到您正在使用 .text() method for setting the value. I think it'll work fine as long as the element in question is not a form input element. If that's the case, you probably have to you use .val() 方法。
我添加的 console.log
测试打印输出可以在 Fiddle 中找到 updateBudgets()
函数。 (Fiddle 已更新)希望对您有所帮助:-)