2

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

我找到了一个类似的帖子,但是那里发布的解决方案对我不起作用。

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

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

4

1 回答 1

2

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

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

$window.location="/search";

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

于 2013-07-15T09:40:07.157 回答