带有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秒后。
- WebStorm 7 – Yeoman Angular丢失的源映射`加载资源失败:服务器响应状态为404(Not Found)
- Nodejs:如何用javascript中的其他字符replace数组中的某些字符
- 如何在不刷新html页面的情况下在表格上显示数据(使用nodejs&mysql ajax)
- 直接上传到AWS S3:SignatureDoesNotMatch仅适用于IE
- Node.js – 致命错误:v8 :: Debug :: SetDebugMessageDispatchHandler V8不再可用
- Passport.js – 浏览器GET请求是好的,但来自JS代码的AJAX请求不是?
- ajax在节点js中获取请求expression
- form数据对象对于html表单发布请求是空的
- Express.js res.render不redirect,只显示在控制台中
- Express.js代理发布请求
- 在Chrome中发生Sequelize查询和PUT错误