带有node.js / jade的Ajax

我正在寻找一种方法来使用在node.js上运行的ajax,express和jade作为模板引擎,而无需路由到子页面。 我读了这个: Node,Express,Ajax和Jade示例

但是这对我不起作用。 我不想让页面的部分path,所以用户可以访问部分页面。 我只是想在网站的一部分提供一个convertet玉文件。

我想这样的事情:

$( ".trigger" ).on( "click", function() { $( ".result" ).load( "ajax/test.jade" ); }); 

我怎样才能做到这一点,而不需要在node.js中设置路由,这样用户就可以在不访问整个页面的情况下访问子页面。

谢谢您的回答。

如果您将该文件作为GET参数发送,该怎么办?

 var jade = require('jade'), fs = require('fs'); app.get('/ajax', function(req, res) { fs.readFile(req.query.file, 'utf8', function (err, data) { if (err) throw err; var fn = jade.compile(data); var html = fn({}); res.send(html); }); }); 

并发送请求

 /ajax?file=test.jade 

如果你做这样的事情,你将只有一条路线。

(仍然需要一个路由,但是)你可以设置一个路由,只有提供一个有效的回应,如果它是一个Ajax请求,并且否则4xx

 app.get('/path', function(req, res) { if(req.xhr) { ... } }); 

req.xhr快速文档 。

可以在您的网站上的公用文件夹中放置一个玉石模板(或HTML文件),假设您已经设置了它。

例如,在app.js中:

 app.use(express.static(__dirname + '/public')); 

放置模板/文件(或任何子文件夹):

 /public/example.html 

然后你可以使用$.get来加载文件,就像你提供的链接一样:

 $.get('/example.html', function(result) { $('#test').html(result); }); 

我有一个Ajax调用的问题

服务器端:

 router.get('/user/letterlist', function(req, res) { // ... some operations res.render('userLetterList', { title: 'test', rows : rows? rows: null, pageCount: pageCount,itemCount: itemCount }); }); 

客户端的index.jade

 extends layout block content div(id="userLettersList") button(type="button" class="btn btn-success") {success} script. $(".btn").click(function(e){ e.preventDefault(); $.ajax({ url: "/user/letterlist", success: function(data){ $("#userLettersList").html(data) ; } }); }); 

客户端的userLetterList.jade

 table(id="UserLetters" class="table table-striped table-bordered") thead .... 

问题是当按下button加载数据到div,它会检索和显示,但页面redirect到空白页面,在一些m秒后。