在上一篇中,express要传递一个object给ejs,是自己先把object序列化成json字串,然后传递给ejs,ejs收到手再解析成json元件。
查看资料,说express连function都可以传递给ejs,那表示是在进程内传递的,应该能直接传递json元件,不需要先序列化成json字串。
exports.yjUser = function(req, res){
var sql = require('msnodesql');
var conn_str = "Driver={SQL Server Native Client 11.0};Server={.\\sql2008};Database={erp};uid=sa;PWD=1234;";
sql.open(conn_str,
function (err, conn)
{
if (err)
{
console.log("Error opening the connection!");
return;
}
conn.queryRaw(
"SELECT UserOID,UserAID,Name FROM Users",
function (err, results)
{
if (err)
{
console.log("Error running query!");
res.end(err);
return;
}
try
{
for (var i = 0; i < results.rows.length; i++)
{
console.log("0:" + results.rows[i][0]);
}
res.render('user.ejs',{data:resuls});
}
catch(e)
{
res.end(e);
}
}
);
}
);
}
在ejs中:
<!DOCTYPE html>
<html>
<head>
<style type="text/css" title="currentStyle">
@import "javascripts/dataTables-1.9.4/media/css/demo_page.css";
@import "javascripts/dataTables-1.9.4/media/css/demo_table.css";
</style>
<script src="javascripts/jquery/jquery-1.10.1.js"></script>
<script src="javascripts/dataTables-1.9.4/media/js/jquery.dataTables.js"></script>
<script src="javascripts/json/json2.js"></script>
<script type="text/javascript">
var g_data = null;
$(document).ready(function() {
var g_data=<%- JSON.stringify(locals.data)%>;
var o1 = '<%- locals.data %>';
var s01 = JSON.stringify(o1);
var s02 = '<%- JSON.stringify(locals.data)%>';
$('#div_json1').text(s01);
$('#div_json2').text(s02);
$('#dynamic').html('<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"></table>');
$('#example').dataTable({
"aaData" : g_data.rows,
"aoColumns" : [{
"sTitle" : "UserOID"
}, {
"sTitle" : "用户标识"
}, {
"sTitle" : "用户名",
"sClass" : "center"
}]
});
});
</script>
</head>
<body>
<h1>My Name is:</h1>
<h1 id="h_name"></h1>
<div id="div_json1"></div>
<br>
<div id="div_json2"></div>
<br>
<div id="div_json3"></div>
<div id="dynamic"></div>
</body>
<% include foot.ejs %>
</html>
这里要注意,s01和s02不相等,s01得到的是[object Object........
s02得到的才是真正的json字串。因为o1的类型是string。