Jquery 快速发动机(如EJS)并放在一起

Jquery 快速发动机(如EJS)并放在一起,jquery,json,node.js,rest,ejs,Jquery,Json,Node.js,Rest,Ejs,我正在构建一个web应用程序,它可以让我跟踪我的运动课程,在这个过程中,我学习了nodejs、mongoose、mongodb和EJS 以下是我使用EJS的声明: var express = require('express'); var app = express(); app.set('view engine', 'ejs'); 我已经用EJS引擎开发了许多页面,但是我有一个包含大量数据的页面,我正在寻找一个解决方案,在这个解决方案中,我可以通过EJS呈现主数据,并通过jQuery和设置R

我正在构建一个web应用程序,它可以让我跟踪我的运动课程,在这个过程中,我学习了nodejs、mongoose、mongodb和EJS

以下是我使用EJS的声明:

var express = require('express');
var app = express();
app.set('view engine', 'ejs');
我已经用EJS引擎开发了许多页面,但是我有一个包含大量数据的页面,我正在寻找一个解决方案,在这个解决方案中,我可以通过EJS呈现主数据,并通过jQuery和设置REST接口检索要显示的附加数据

我现在的做法是将模板和一个大的JSON以及要显示的数据传递给EJS呈现函数:

res.render('template.ejs', jsondata); // jsondata is a big JSON object
在模板页面中,我有以下两行代码:

<script type="text/javascript">
  var dataStr = '<%- JSON.stringify(jsondata) %>';
  var data = JSON.parse(dataStr);
  // ...other javascript code to perform super cool stuff on my page...
</script>
问题似乎是模板引擎不喜欢被旁路,而试图直接向客户机发送JSON

我错过了什么

编辑

显然,这是一个问题,由于一些愚蠢的错误,我甚至无法复制。因此,EJS引擎显然不会干扰res.json函数

以下是我在服务器端的代码,我希望它能帮助任何面临类似问题的人:

app.get('/rest/*', function(req, res) {
    var query = req.query;
    var user = req.user;

    console.log('query:');
    console.log(query);
    console.log('user:');
    console.log(user);

    // Some code which produces a result
    var result = { foo : 'bar'};
    res.json(result);
});
在客户端,我有以下jQuery函数:

<button id="application" onClick="perform_query(this.id)">This will make a query using a rest interface</button>

<script type="text/javascript">
  function perform_query(clicked_id) {
    var query = {};
    var queryEncoded = '';
    // Build the query
    query = {
      application : clicked_id,
      other: 'any other parameter'
    };

    // Encode the query
    queryEncoded = $.param(query);
    console.log(queryEncoded);

    var url = 'http://localhost:8080/rest/?' + queryEncoded;
    $.getJSON(url, function (data) {
      console.log( "success: " );
      console.log(data);
    })
    .done(function() {
      console.log('In done()');
    })
    .fail(function() {
      console.log('In fail() : Something went wrong!');
    })
    .always(function() {
      console.log('complete');
    });
  }
</script>

我希望我在正确的道路上…:

您遇到了什么错误?删除扩展名.ejs,如下所示。。。res.render'template',jsondata;
<button id="application" onClick="perform_query(this.id)">This will make a query using a rest interface</button>

<script type="text/javascript">
  function perform_query(clicked_id) {
    var query = {};
    var queryEncoded = '';
    // Build the query
    query = {
      application : clicked_id,
      other: 'any other parameter'
    };

    // Encode the query
    queryEncoded = $.param(query);
    console.log(queryEncoded);

    var url = 'http://localhost:8080/rest/?' + queryEncoded;
    $.getJSON(url, function (data) {
      console.log( "success: " );
      console.log(data);
    })
    .done(function() {
      console.log('In done()');
    })
    .fail(function() {
      console.log('In fail() : Something went wrong!');
    })
    .always(function() {
      console.log('complete');
    });
  }
</script>