检测Ajax并在SailsJs中设置布局null

时间:2015-07-21 07:25:20

标签: ajax node.js sails.js

我会实现pajax,如果请求是ajax,我需要检查服务器端并将布局设置为null以返回没有布局的视图。

我知道req对象包含一个' xhr'属性。如何将布局自动置零?

提前致谢!

编辑:我找到了解决方案!见这里:https://stackoverflow.com/a/31571250/4870013

4 个答案:

答案 0 :(得分:4)

您可以查看req.wantsJSON对象:

// True, if the request has a xhr polling origin. (via socket)
req.wantsJSON = req.xhr;

示例:

if (req.wantsJSON) {
     res.view("yourView", { layout: null }); 
} else {
     res.view("yourView"); 
}

答案 1 :(得分:1)

  

您可以通过检测请求

来执行此操作
if(!Request.isAjax)
{
   // your code with return Layout
}
else
{
// your code without return Layout
}

答案 2 :(得分:1)

  

如果request.headers包含HTTP_X_REQUESTED_WITH,则可以检查它。

如果HTTP_X_REQUESTED_WITH的值为XMLHttpRequest,则它是ajax请求。

示例:

if (request.headers["x-requested-with"] == 'XMLHttpRequest') {
    //is ajax request
}

答案 3 :(得分:0)

我找到了解决方案!我使用一项政策来实现这一结果。

我的政策:

module.exports = function(req, res, next) {
  if (req.xhr) {
    res.locals.layout = null;
  }
  return next();
};

我的政策配置:

module.exports.policies = {
  '*': 'isAjax'
};

像魅力一样工作!