如何使用Ajax动态和正确地填充表?

时间:2013-02-07 01:16:36

标签: ajax xml dynamic html-table

我有一个表单,用户提交查询,然后有一个Servlet处理此查询并以XML格式返回结果。有了这个结果,试图通过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相对应的列中。

我希望我在相应的列中写下每个变量的值。我想知道我应该在代码中做些什么来改变这一点。

1 个答案:

答案 0 :(得分:0)

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