【问题标题】:Node JS express-handlebar reloading a pageNode JS express-handlebar重新加载页面
【发布时间】: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


    【解决方案1】:

    我使用 location.reload() 从 ajax 本身重新加载了页面。因此,当单击下一个或上一个分页选项时,它会转到 ajax 函数,该函数又会调用节点服务器来获取下一个/上一个数据集。在数据之后的同一个 ajax 函数中,我添加了成功属性 - 成功:{ location.reload() },错误:{ .... }。现在它就像一个魅力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      相关资源
      最近更新 更多