0

ユーザーがクエリを送信してから、このクエリを処理して結果を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

観察できるように、このクエリには、gn1、indication1、gn2、indication2の4つの変数があります。何が問題になっているのかというと、すべての変数の値がgn1とindication1に対応する列に書き込まれているということです。

各変数の値を対応する列に書き込むことを望みました。これを可能にするために、コードを何に変更すればよいのでしょうか。

4

1 に答える 1

0

バインディング要素の名前の値を尊重し、要素を解析して正しく構築した列に関連付ける必要があります。検索「リテラル」を実行しているときは、バインディング要素の解析をスキップしています。「バインディング」を見つけ、名前を尊重し、それに基づいて使用する列を検索し、それらのそれぞれについて、実際の値の「リテラル」要素を見つける必要があります。

于 2013-02-07T01:31:06.230 に答える