как отобразить файл и отправить данные на страницу в том же GET-запросе - PullRequest
0 голосов
/ 05 октября 2019

Я использую angularjs на стороне клиента и Experss.js на стороне сервера, я хочу визуализировать страницу и отправить данные на страницу (для заполнения таблицы) в том же запросе get

iпытался использовать движок ejs для заполнения таблицы на стороне сервера, а затем визуализировать страницу, но проблема с этим решением заключается в том, что клиентская сторона (angularjs) не может получить доступ к данным или манипулировать ими. Другое решение (однозначное) состоит в том, чтобы

  1. сделать запрос на получение, чтобы получить страницу на стороне клиента
  2. , отрендерить страницу на стороне сервера
  3. сделать другуюполучить запрос со стороны клиента для получения данных
  4. отправить данные с сервера клиенту

Проблема заключается в том, что он содержит два запроса get. Есть ли возможный способ визуализации страницы и отправки данных в одном запросе на получение?

Я делаю это, чтобы сделать загрузку на сайте более эффективной. Могу ли я добиться большей эффективности с помощью одного запроса GET?

Ответы [ 3 ]

1 голос
/ 05 октября 2019

Нет, вы не можете. Вы можете иметь только один ответ на данный запрос. Браузер либо ожидает HTML-документ, либо ожидает JSON, нет смысла давать его одновременно. но вы можете отобразить страницу и отправить данные одновременно:

res.render('reports',{data:json});

, а затем получить доступ к этим данным на вновь отображаемой странице.

в качестве альтернативы вы можете отправить флаг при созданииПозвоните, а затем решите, хотите ли вы выполнить рендеринг или отправку, основываясь на этом флаге.

Или в идеале это должны быть 2 отдельных маршрута, один из которых сплит json, а другой - рендеринг вида. Иначе, вы можете передать параметр url, в зависимости от того, что вы возвращаете json или визуализировать представление.

router.get('/reports/json', function(req,res){
   var data = JSON_OBJECT;
   res.send(data);
});

router.get('/reports', function(req,res){
   var data = JSON_OBJECT;
   res.render('path-to-view-file', data);
});
0 голосов
/ 06 октября 2019

Не могли бы вы попробовать использовать rout.getparam и передать значения в маршрут в запросе get

0 голосов
/ 05 октября 2019

Чтобы получить доступ к данным в приложении AngularJS без второго запроса к серверу, включите сценарий .value:

<script>
    angular.module("myApp").value("myData",
         <JSON data here>
    }
</script>

Затем в контроллер вставьте его:

app.controller("myCtrl", function($scope, myData) {
    $scope.data = myData;
})

Длядополнительную информацию см.

...