页面未从Express POST路由呈现

时间:2013-07-15 09:28:10

标签: node.js angularjs express

我正在尝试使用POST路由显示页面,但到目前为止还没有运气。从Angular控制器调用该路由。 POST路由被正确调用 - 我在节点控制台POST /search 200 673ms中得到了这个 - 但是页面没有显示。如果我直接从浏览器调用路由(即键入地址),它可以正常工作。任何帮助将不胜感激。

我找到了similar post,但是那里发布的解决方案对我不起作用。

这是我的代码:
角度控制器

function SearchController($scope, $http){
   $scope.product = {...};

   $scope.search = function(form) {
      $http.post('/search', { product : $scope.product });
   };
}

路线定义

  var products = require('../app/controllers/products')
  app.post('/search', auth.requiresLogin, products.results)

路线控制器

exports.results = function (req, res) {
   // build query and fields var

   Product.find(query, fields, function (err, docs) {
      res.render('products/results', {
        title: 'Search Results',
        user: req.user ? JSON.stringify(req.user) : "null",
        searchResults: docs ? docs : "null"
      })
   });
}

我正在使用Express 3.3.3,Node 0.10.9和Angular 1.0.3

1 个答案:

答案 0 :(得分:2)

如果您尝试通过$ http调用呈现快速页面,那么它将无效。您应该只通过ajax而不是页面请求数据。

如果您需要重定向到页面,请在ajax回调中使用$ window服务。

$window.location="/search";

如果您的快速控制器渲染json应该没有问题。但由于您使用的是res.render方法,我理解并非如此。