Маркетинговое облако SSJS - передача JavaScript между двумя скриптами

У меня есть облачные страницы.

На этой странице у меня есть

  1. Скрипт SSJS, который извлекает записи из расширения данных. Из столбца count в расширении данных я хочу создать массив

dataarray = [10,20,30,40,50]

  1. Затем мне нужно передать этот массив (dataarray) в другой скрипт, где я могу использовать его в d3.

Проблема, с которой я сталкиваюсь, заключается в том, как передать значения из сценария, который выполняется на сервере, в сценарий, который выполняется в клиенте. Я пробовал скрытый метод элемента HTML, который не работает и не является следствием выполнения скрипта.

Подскажите, пожалуйста, как передать значения.

<!DOCTYPE html>
<html>
 <head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
   <meta name="description" content="">
   <meta name="author" content="">
   <link rel="icon" href="https://www.abc.nl/favicon.ico">
   <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
 </head>
 <body>
     <script runat="Server">
     Platform.Load("core","1.1.5");
       var data_rec;
      try
        {
          var myDE = DataExtension.Init('01_Reporting_Sent_Today');  
          var filter = {Property:'return',SimpleOperator:'equals',Value:'1'};
          var data = myDE.Rows.Retrieve(filter);   
          data_rec = data.length;    
          Write("<br/>The len is :" + Stringify(data_rec))
        }catch(ex)
        {
           Write("<br/>The error is :" + Stringify(ex))
        }
   </script>
   <script>      

    var datachart = [10,20,30,40,50];
        var canvas = d3.select("body")
                .append("svg")
                .attr("width",500)
                .attr("height",500)
            var bars = canvas.selectAll("rect")
                .data(datachart)
                .enter()
                 .append("rect")
                 .attr("width",function (d) { return d;})
                 .attr("height",50);
     
          
   </script>
 </body>
</html>

поэтому массив данных из первого скрипта, мне нужно использовать во втором скрипте

0 ответов

Вы можете использовать AMPScript для возврата значения внутри JS-скрипта:

<script runat="server">
  ...
  var dataString = Stringify(data);
  Variable.SetValue("@dataString", dataString);
</script>
<script>
  var data = JSON.Parse(%%=v(@dataString)=%%); 
</script>

Другие вопросы по тегам