【发布时间】:2016-06-08 04:09:26
【问题描述】:
我正在编写一个 Node.js + Express + express-handlebar 应用程序。我正在从 MySQL 数据库中读取数据并将其显示在表格中。我正在实现分页功能,单击“下一步”按钮我对我的节点 js 服务器进行 ajax 调用
$j('.btn-nxt').click(function(){
$j.ajax({
type: 'post',
url: '/',
data : {
action: 'next'
},
error: function(err) {
console.log('------------ Error while updating this resident: ' + err);
console.log('------------ Error while updating this resident: ' + err.message);
}
});
});
以下是我的 index.handlebars 的 index.js 路由
index.js
var express = require('express');
var router = express.Router();
var callDatabase = require('../config/database.js');
var startIndex = 0;
var recordLimit = 10;
//home page route
router.get('/', function(req, res){
callDatabase.getResidents(req, res, startIndex, recordLimit);
});
router.post('/', function(req, res){
var data = req.body;
var action = data.action;
if(action == 'next') {
startIndex += recordLimit;
}
callDatabase.getResidents(req, res, startIndex, recordLimit);
res.redirect('/');
});
module.exports = router;
这是我正在实际调用我的数据库的 database.js
database.js
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'dbname-db.rds.amazonaws.com',
user : 'username',
password : 'password',
port: '3306',
database : 'dbname',
multipleStatements: true,
dateStrings: true
});
var residentQuery = 'SELECT idResidents, name, primaryEmail FROM Residents LIMIT ';
exports.getResidents = function(req, res, startIndex, recordLimit) {
connection.query(residentQuery + startIndex + ',' + recordLimit, function(err, rows, fields) {
if (err) {
console.log('----------------------- ERROR: Error querying records - ' + err);
console.log('----------------------- ERROR: ' + err.message);
return err;
}
for(var i in rows) {
console.log('id: ' + rows[i].idResidents + ' name: ' + rows[i].name + ' email: ' + rows[i].primaryEmail);
}
res.render('index', {
title:'Test Node App',
dbrows: rows
});
});
}
当我运行我的应用程序时,会出现前 10 行,当我单击下一步按钮时,会进行 ajax 调用,我可以在 database.js 的 conslo.log 中看到接下来的 10 行。但是我的观点没有得到更新。我尝试从 index.js 的 route.post() 和 database.js 调用 res.render('/') 但它给了我一个错误消息 - “发送后无法设置标题”。
如何刷新我的表格?我正在使用 {{#each dbrows}}...{{/each}} 来填充行。
【问题讨论】:
标签: javascript ajax node.js express handlebars.js