将html div传递给ajax调用

时间:2017-06-14 08:38:48

标签: javascript jquery html node.js ajax

所以我有我的服务器端代码,它执行多个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");
    }
});

2 个答案:

答案 0 :(得分:1)

是的,您可以,但正如您在评论中指出的那样,返回的数据存在问题。

  

无法执行&#39; appendChild&#39; on&#39; Node&#39;:参数1不属于&#39; Node&#39;。

当您尝试使用JavaScript附加子节点时,抛出此错误,该JavaScript不是documentElement(即document.createElement('div'))。由于您已经在使用jQuery,因此您可以轻松更改代码。

在AJAX调用的成功函数中,更改

document.getElementById('outputTables').appendChild(data);

$('#outputTables').append(data);

如果您希望能够从一个页面执行多个AJAX调用并每次更改表格(例如将旧表格替换为新表格),则应使用html(data)而不是append(data)

答案 1 :(得分:-1)

因此,您可以根据查询的查询在响应json中再增加一个参数,例如&#34; queryProcessed&#34;?

在客户端添加额外的检查,并根据&#34; queryProcessed&#34;

进行标记。