我只想知道传入的请求是标准页面加载还是来自ajax
请求。
基本上,我想为我的 ajax 和正常加载页面使用相同的控制器。
目前我正在使用:
console.info(req.get('Content-Type')); //undefined.
这是我正在使用的节点代码
getFixtures: function (req, res) {
var passData = {}
console.info(req.get('Content-Type'));
passData.params = req.params;
leagues(app).getLeagues(passData)
.then(filterBarFixtures)
.then(function () {
res.render('games', {
title: 'Fixtures and Results',
passData: passData
})
});
}
app.get('/fixtures/', controllers.getFixtures);
2 加载同一控制器的方式
打开浏览器并导航到/fixtures
或
$.ajax({
method: "GET",
url: "/fixtures"
})
您需要在客户端请求中设置要在服务器中查找的标头,或者设置搜索/查询参数
但是,当您使用jQuery时,您无需担心
jQuery $.ajax
使用 XMLHttpRequest
,它设置X-Requested-With=XMLHttpRequest
请求标头
此外,如果请求是针对JSON(使用具有适当设置或$.getJSON
的$.ajax
),jQuery通常会设置Accept:application/json, text/javascript, etc
请注意,我说"通常"是为了遮住我的屁股,以防万一在某些奇怪的浏览器中这不会发生:p
您对以下方面的评论
beforeSend: function(request) { request.setRequestHeader("ajax",true); }
可能是最安全的选择,因为该标头保证存在,因此这是要在服务器端查找的标头。