Когда я res.рендеринг после извлечения параметров из URL-адреса страница загружается с предыдущим URL-адресом

** Задача: * * получение продукта на основе product_id:
Пример: когда я ударил localhost: 8080 / products/44566
сервер отвечает страницей продукта для продукта с идентификатором продукта: 44566

Домашняя страница, где есть продукты, и когда я нажимаю на них,они передают product_id в угловой контроллер 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});

});

Это означает, что я render productPage.ejs и ответ успешно возвращается к моему угловому контроллеру js:

$масштаб.getProductPage = функция (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){

        });

    };

где он использует окно.местоположение.назначить («/products / » +product_id); перейти на страницу с указанным product_id. Но когда эта страница загружается, я вижу следующее поведение сервера:

Обратите внимание, что все URL-адреса идут с запросом / продуктами/, где в качестве onlt основной URL-адрес маршрута должен быть передан таким образом

1 ответ

  1. Под «этим поведением» я предполагаю, что вы подразумеваете, что таблицы стилей/изображения не загружаются должным образом.

    Это происходит потому, что на вашей HTML-странице (или, скорее.ejs, в файле шаблона) вы помещаете относительные URL-адреса документов для их загрузки. Например.:

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

    в то время как они должны быть сделаны абсолютными URI:

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

    Кроме того, можно использовать <base>тег в <head>узле:

    <base href="/">