【问题标题】:pass Node JS variable to javascript将 Node JS 变量传递给 javascript
【发布时间】:2022-02-04 23:39:13
【问题描述】:

我正在尝试在客户端显示整个数据库文件。

我有一个 DB 文件,它是从 python 脚本连接的,并且 python 脚本与我的 Node JS 服务器连接。 我想使用 javascript 在 html 文件上制作一个表格。 我不确定这是将 Node JS 变量传递给 javascript 的正确方法。

当我执行 console.log(data[0]);在javascript文件中,我认为它应该打印出数据变量的第一行,但它只打印出整个数据变量的第一个字母。

我想从javascript接收数据变量作为对象或数组,而不是字母,但我不知道如何。

下面是我的 server.js 部分

app.get('/data', function(req, res) {
    var options = {
        mode: 'json',
        pythonPath:'',  
        pythonOptions:['-u'],
        scriptPath:'',
        args: []
    };
    PythonShell.PythonShell.run('dbShow.py', options, function(err, results) {
        if(err) throw err;
        const headings = ['Name','SSN','State'];
        res.render(__dirname + '/data.html',{headings:headings,data:results[0]});
    });
});

以下是我在 html 文件中的部分 javascript 代码。

<script>
    var data = "<%= data %>";
    var headings = "<%= headings %>";
    document.write("<table>");
    for(let i=0;i<data.length;i++) {
        document.write("<tr>");
        for(let j=0;j<headings.length;j++) {
            document.write("<td>"+data[i][j]+"</td>");
        }
        document.write("</tr>");
    }
    document.write("</table>");
</script>

【问题讨论】:

    标签: javascript html node.js


    【解决方案1】:

    这会将data(客户端)设置为字符串文字:

    var data = "<%= data %>";
    

    如果 server-side data 变量已知是 JavaScript 对象或数组,并且将其包裹在引号中有效地使其成为 JSON,请不要将其包裹在引号中:

    var data = <%= data %>;
    

    或者解析JSON

    var data = JSON.parse("<%= data %>");
    

    例如,如果服务器端 data 可能为空,这可能很有用。或者至少可以为这种情况产生更有意义的错误消息,而不是 JavaScript 语法错误。

    但作为调试工作的一部分,您要做的第一件事是查看客户端页面源代码并查看这些行实际输出的内容。如果它不是有效的 JavaScript 或 JSON,你会想要解决这个问题。

    【讨论】:

    • var data = ""; var 数据 = ; var data = JSON.parse(); var data = JSON.parse("");我尝试了其中的四个,但它说 SyntaxError: Unexpected identifier
    • 或 SyntaxError: JSON Parse error: Unable to parse JSON string 但是当我在节点 js 中检查服务器端的结果类型时,它说它是一个对象。
    • @OnamKwon:那么你输出的实际语法是什么?同样,您在这里的第一个调试步骤是查看浏览器中的实际页面源代码,并查看生成的 JavaScript 代码是什么。如果输出不是您所期望的,那么问题不在于您假设的 JavaScript,而在于您如何生成它。例如,如果您显示的代码行与您在浏览器页面源代码中看到的完全相同,那么您永远不会真正将数据输出到 JavaScript。
    猜你喜欢
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多