我正在寻找一种方法来使用在node.js上运行的ajax,express和jade作为模板引擎,而无需路由到子页面。我读到了这个:Node, Express, Ajax, and Jade Example
但这对我不起作用。我不想创建到页面的部分部分的路由,因此用户可以访问部分页面。我只是想在网站的一部分中提供转换器玉文件。
我想到这样的事情:
$( ".trigger" ).on( "click", function() {
$( ".result" ).load( "ajax/test.jade" );
});
如果不在node.js中设置路由,我怎么能这样做,这样用户就可以访问子页面而无需访问整个页面。
感谢您的回答。
答案 0 :(得分:5)
如果您将文件作为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
如果你这样做,你将只有一条路线。
答案 1 :(得分:0)
(仍需要一条路线但是)您可以设置一条路线,如果它是ajax请求,则仅提供有效的响应,否则为4xx
app.get('/path', function(req, res) {
if(req.xhr)
{
...
}
});
req.xhr
快递docs。
答案 2 :(得分:0)
您可以将jade模板(或HTML文件)放置在您网站上的公共文件夹中,假设您已将其设置。
例如,在app.js中:
app.use(express.static(__dirname + '/public'));
将模板/文件放在(或任何子文件夹)中:
/public/example.html
然后您可以使用$.get
加载文件,例如您提供的链接:
$.get('/example.html', function(result) {
$('#test').html(result);
});
答案 3 :(得分:0)
我遇到了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
....
问题是当按下按钮将数据加载到div中时,它将检索并显示,但是在几秒钟之后页面会重定向到空白页面。