【问题标题】:How to populate the table dynamically and correctly with Ajax?如何使用 Ajax 动态且正确地填充表格?
【发布时间】:2013-01-22 09:52:12
【问题描述】:

我有一个表单,用户在其中提交查询,然后有一个处理该查询并以 XML 形式返回结果的 Servlet。由于这个结果试图通过 Ajax 动态填充一个表,为此,我使用下面的代码。

var thead = $("<thead>");
var rowsTHead = $("<tr>");
var tbody = $("<tbody>");
var numberOfColumns;

$(xml).find("head").each(function(){
  var variable = $(this).find("variable");
   numberOfColumns = variable.length;
   for (var i = 0; i < variable.length; i++){
     var name = $(variable[i]).attr("name");
     rowsTHead.append($("<th>").html(name));
   }
});
thead.append(rowsTHead);

$(xml).find("result").each(function(){
   var literal = $(this).find("literal");
   var rowsTBody = $("<tr class=\"even\">");

   literal.length = numberOfColumns;
   for (var j = 0; j < literal.length; j++){
      var tdBody = $("<td>");
      tdBody.html($(literal[j]).text());
      rowsTBody.append(tdBody);
   }
   tbody.append(rowsTBody);
});

$(".tablesorter").empty()
 .append(thead)
 .append(tbody);

此代码在用于 UNION 查询之前运行良好。使用 UNION 时,返回的 xml 以下列方式出现http://pastebin.com/y7hXK1Zy

可以看出,这个查询有 4 个变量,它们是:gn1、indication1、gn2、indication2。 问题是所有变量的值都写在对应于gn1和indication1的列中。

我希望将每个变量的值写在其对应的列中。我想知道我应该对我的代码进行哪些更改才能实现这一点。

【问题讨论】:

    标签: ajax xml dynamic html-table


    【解决方案1】:

    您需要尊重绑定元素的名称值,并将它们与您通过解析元素正确构建的列相关联。当您进行查找“文字”时,您将跳过绑定元素的解析。您应该找到“绑定”,尊重名称并根据该名称查找要使用的列,然后为每个列找到实际值的“文字”元素。

    【讨论】:

    • 您好 Chris Morley,感谢您的反馈。这就是问题所在,在寻找一种将绑定值与列相关联的方法时已经打了足够多的头,但不幸的是还不能做到这一点。你能给我一个关于如何做这个检查的提示吗?谢谢
    • 解决问题。确保首先存储列。确保如果您有一个像“gn1”这样的简单字符串,您可以查找列索引。这应该是对您的阵列的简单检查。然后,确保给定列索引作为数字,您可以编写适当的空 td 元素来获得您正在寻找的最终结果。然后将其链接在一起。
    • 你好克里斯莫利,下午好。无法用您的提示解决我的问题。我的代码如下pastebin.com/KV4ShRDn感谢您的帮助。直到下一个。
    猜你喜欢
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 2023-03-10
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    相关资源
    最近更新 更多