当我从URL获取参数后res.render,页面加载前一个URL

时间:2016-10-31 19:51:59

标签: angularjs node.js express

**任务:**根据product_id检索产品: 示例:当我点击localhost时:8080 / products / 44566 服务器响应产品ID为44566

的产品页面

有产品的主页,当我点击它们时,它们将product_id传递给Angular JS控制器,如下所示:

$scope.getProductPage = function(product_id){

        // window.location.assign("/products/"+product_id);

        $http({
            url:"/products/"+product_id,
            method : "GET"
        }).then(function mySuccess(response){

            window.location.assign("/products/"+product_id);

        }, function myError(response){

        });

    };

这将数据发送到节点服务器:

//API to GET the sell page
router.get('/products/:product_id', function(req, res, next) {

  var product_id = req.params.product_id;
  console.log('product_id', product_id);

  res.render("productPage", {data: req.params.product_id});

});

这意味着我渲染productPage.ejs并且响应成功返回到我的角度js控制器:

$ scope.getProductPage = function(product_id){

        // window.location.assign("/products/"+product_id);

        $http({
            url:"/products/"+product_id,
            method : "GET"
        }).then(function mySuccess(response){

            window.location.assign("/products/"+product_id);

        }, function myError(response){

        });

    };

它使用window.location.assign(“/ products /”+ product_id);转到具有该特定product_id的页面。但是当该页面加载时,我看到服务器的以下行为:

请注意,所有网址都与请求/产品/一致,因为主要路径网址应该像那样传递

1 个答案:

答案 0 :(得分:0)

通过"这种行为"我假设你的意思是样式表/图像没有正确加载。

这是因为在您的HTML页面(或者更确切地说是.ejs模板文件)中,您要放置文档相对URL以加载它们。例如:

<img src="images/xyz.png" />

然而,这些应该是绝对URI:

<img src="/images/xyz.png" />

或者,您可以使用<base>节点中的<head>标记:

<base href="/">