我正在尝试使用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
答案 0 :(得分:2)
如果您尝试通过$ http调用呈现快速页面,那么它将无效。您应该只通过ajax而不是页面请求数据。
如果您需要重定向到页面,请在ajax回调中使用$ window服务。
$window.location="/search";
如果您的快速控制器渲染json应该没有问题。但由于您使用的是res.render
方法,我理解并非如此。