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 陈述而不是您问题的实际答案.

无论如何,下面是一些我会尝试检查的问题:

  1. query.find
  2. 之后,您是否收到来自服务器的答复?
  3. 检查是否从服务器获取数据(内部查询)
  4. 检查获取查询后是否成功接收到类别数据
  5. 检查是否找到具有类别 ID 的元素
  6. 为获取和查询添加了错误处理

我还注意到您正在使用 .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 已更新)希望对您有所帮助:-)