javascript - 使用 JavaScript 服务器端变量未捕获语法错误

标签 javascript node.js

我在服务器端使用 Node.Js,它生成一个 JSON,我将其转换为一个对象,并且我需要从客户端访问它,特别是从 HTML 页面中的脚本访问它。

编辑:服务器端代码

在服务器端,这是发生 post 请求时的代码:

exports.plot = function(req, res){
    var json;
    request.post({
            uri:"http://127.0.0.1:8080/api/v1/datapoints/query",
            headers: {'Content-Type': 'application/json'},
            body:req.body.txt1
            },function (error, response, body) {
                if (!error && response.statusCode == 200) {

                    var json = JSON.parse(body); //JSON converted in an object
                    res.render('query', json);

                }
            }
        );

};

有人建议我使用服务器端脚本(如 ASP.NET 中使用的脚本)来访问该对象。

所以我使用该语法来获取我想要的值,但是在 Chrome 控制台上我收到此错误“Uncaught SyntaxError: Unexpeted token (”。

我哪里错了?

这是代码

<script>
 function(){
    var start = new Date();
        var queryLength = <%= queries.length %>, // This gives me a number correctly
        timestamps = [],
        tagsString = [],
        values = [],
        dataPoints = [];

        var metric = <%= queries[0].results[0].name %>; //Gives me correctly a string

    //il for che mi scorre tutta la risposta    
    for (var j = 0; j < queryLength; j++)
    {

    }
} 
</script>

完整的错误是:

Uncaught SyntaxError: Unexpected token ( jquery-1.9.1.js:603
(anonymous function) jquery-1.9.1.js:603
jQuery.extend.globalEval jquery-1.9.1.js:604
jQuery.fn.extend.domManip jquery-1.9.1.js:6187
jQuery.fn.extend.append jquery-1.9.1.js:5949
(anonymous function) jquery-1.9.1.js:6074
jQuery.extend.access jquery-1.9.1.js:852
jQuery.fn.extend.html jquery-1.9.1.js:6038
(anonymous function) format-timestamp.js:36
fire jquery-1.9.1.js:1037
self.fireWith jquery-1.9.1.js:1148
done jquery-1.9.1.js:8074
callback jquery-1.9.1.js:8598

最佳答案

该错误与 JSON 或服务器端代码无关。

语法错误在这里:

function(){

它看起来像函数表达式的开头,但您没有将其用作表达式。它与函数声明的语法冲突,函数声明的语法如下所示:

function functionName(){

解析器期望函数名称遵循 function 关键字,但实际上有一个括号。

如果要声明一个函数,应该有一个函数名。如果你想使用函数表达式,那么你需要将它用作表达式,即:

(function(){
  ...
})();

我添加了 () 来实际调用该函数,否则它只会创建该函数并将其丢弃而不调用它。

如果您想使用 jQuery ready 事件的简写,则如下所示:

$(function(){
  ...
});

编辑:

要在 Javascript 代码中重新创建对象或数组,您必须以文字语法在代码中打印它。您可以为此使用 JSON,因为它是 Javascript 对象语法的子集。

伪代码(我不知道node.js有哪些用于JSON的库):

var queries = <% toJson(queries) %>;

关于javascript - 使用 JavaScript 服务器端变量未捕获语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21193173/

相关文章:

javascript - 如何在jquery中禁用日期(明天日期)

javascript - 在 javascript 中提交表单后,IE 不会关闭窗口

javascript - 在弹出窗口中显示完整的 html(元、头部、正文)

javascript - 如何从 Google Forms 弹出下拉列表中选择一个选项 Puppeteer NodeJS

node.js SPA webapp - 所有通信均通过 websockets

javascript - 未能实现隐藏到 DIV 的溢出

javascript - Qualtrics API v2.5 中的 "Incorrect username or password"错误消息

node.js - 使用 Sequelize.js ORM 查询多个模型

node.js - Node - 将变量渲染到部分布局 ejs-locals 中

php - 从 PHP 发送请求到 Node.js