【发布时间】:2017-11-16 07:16:07
【问题描述】:
所以我有我的服务器端代码,它执行多个 bigquery 查询并将结果排列在一个表中,并且这个服务器端代码由客户端的 ajax 调用调用。 我希望能够将表/div 从我的服务器端代码发送到客户端并在那里呈现。这可能吗??
我不希望通过首先通过调用获取 JSON 结果来在客户端创建表,因为我不知道哪个查询将首先运行并且所有结果都不同。 (对于每个查询,多个 ajax 调用也是不可能的)
服务器代码 (app.js)
function printResult(rows, queryNumber) {
console.log('Query No. '+queryNumber+' Results:____');
var keys = [];
if (queryNumber == 1) {
var table = document.createElement('table');
var td = [];
var tr = document.createElement('tr');
for (var i = 0; i < rows[0].length; i++) {
var tn1 = document.createTextNode(rows[i].Content_title);
var tn2 = document.createTextNode(rows[i].Audience_Size);
td[i] = document.createElement('td');
td[i].appendChild(tn1);
td[i + 1] = document.createElement('td').appendChild(tn2);
tr.appendChild(td[i]);
tr.appendChild(td[i + 1]);
table.appendChild(tr);
res.send(table);
}
}
}
Ajax 调用
$.ajax({
url: 'http://localhost:3000/example',
type: 'POST',
data: {showname: show, counter: uniquesOverallShowsCounter},
dataType: 'text',
contentType: 'application/x-www-form-urlencoded',
success: function (data) {
document.getElementById('outputTables').appendChild(data);
},
error: function() {
console.log("error");
}
});
【问题讨论】:
-
您还应该包含一个数据示例
-
这肯定行得通,但您的
res.send(table)目前处于错误位置。将它放在你的 for 循环之后。 -
@DouwedeHaan 我收到错误消息“无法在 'Node' 上执行 'appendChild':参数 1 不是 'Node' 类型。”在 ajax 调用中。
-
appendChild需要一个 documentElement(纯 JavaScript)。由于您已经在使用 jQuery,我建议您使用$('#outputTables').append(data);而不是document.getElementById('outputTables').appendChild(data);如果这是解决您问题的方法,我会将其编辑为答案。
标签: javascript jquery html node.js ajax