【发布时间】:2023-03-03 05:18:19
【问题描述】:
我最近从一个 codeigniter 框架迁移到一个带有 express 框架的 nodejs。我们的 codeigniter 网站有很多 JS,因为它是一个单页应用程序,所以我们进行了很多 AJAX 调用。我们现在正在搞乱 node 和 express,我无法获得简单的 AJAX 函数调用。可能是对节点缺乏了解,也可能是其他原因。我们正在使用 openshift 来托管。我们使用 hogan-express 作为模板。
server.js
var express = require('express');
var fs = require('fs');
var http = require('http');
var path = require('path');
var SampleApp = function() {
var self = this;
self.initializeServer = function() {
self.app = module.exports = express();
self.app.configure(function() {
self.app.set('views', __dirname + '/views');
self.app.set('view engine', 'html');
self.app.engine('html', require('hogan-express'));
//self.app.set('layout', 'layout') # use layout.html as the default layout
self.app.use(express.favicon());
self.app.use(express.logger('dev'));
self.app.use(express.bodyParser());
self.app.use(express.methodOverride());
self.app.use(express.session());
self.app.use(self.app.router);
self.app.use(require('stylus').middleware(__dirname + '/public'));
self.app.use(express.static(path.join(__dirname, 'public')));
});
require('./routes');
}
这个文件里面的代码比较多,我只包括相关代码(我认为)。
Ajax.html
<div id="button">
<button id="testbutton">Push Me!</button>
</div>
<div id="populate">{{title}}</div>
<div id="null">{{>part}}</div>
<script type='text/javascript'>
$(function(){
$('#testbutton').click(function (){
$.ajax({
url:'/test',
type: 'POST',
success: function(result){
alert('success!');
},
error: function(){
alert("well this is embarassing... if the problem persists please let us know at facebook.com/stembuds");
}
});
});
});
</script>
index.js
app = require('../server');
app.get('/', function(req, res){
res.render('ajax');
});
app.post('/test', function(req, res){
console.log('get');
res.locals = {title: 'Horray'};
res.render('ajax', {partials:{part:'part'}});
});
part.html
<p> pass me in!!</p>
所以基本上我想要做的是当单击按钮时,我希望 ajax 调用显示部分视图。我们将构建站点的方式是拥有一个页面,并让 ajax 调用根据用户单击的按钮呈现不同的视图。所以这是有趣的部分:我从 ajax 调用中获得了成功警报,但 {{title}} 和 {{>part}} 从未出现。但是,当我转到控制台并单击“网络”,然后单击“测试”(我的 ajax 调用的 url)时,响应显示填充有“万岁”和“传给我!!”的 div。抱歉,篇幅较长,感谢您提供的任何信息。
【问题讨论】:
标签: ajax node.js express hogan.js