Jquery 快速发动机(如EJS)并放在一起
我正在构建一个web应用程序,它可以让我跟踪我的运动课程,在这个过程中,我学习了nodejs、mongoose、mongodb和EJS 以下是我使用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
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>