【问题标题】:Marketing cloud SSJS - javascript passing values between 2 scripts营销云 SSJS - javascript 在 2 个脚本之间传递值
【发布时间】:2019-05-25 02:10:22
【问题描述】:

我有一个云页面。

在这个页面上,我有

  1. SSJS 脚本,从数据扩展中检索记录。从数据扩展中的计数列,我想创建一个像
  2. 这样的数组

数据数组 = [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>

所以第一个脚本中的数据数组,我需要在第二个脚本中使用

【问题讨论】:

    标签: javascript jquery html ssjs salesforce-marketing-cloud


    【解决方案1】:

    您可以使用 AMPScript 来返回 JS 脚本中的值:

    更新:修复了 Reidenshi 指出的示例中不正确的语法

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

    【讨论】:

    • 请注意,JSON.parse 中的 'parse' 应该小写。否则你会得到错误 Uncaught TypeError: JSON.Parse is not a function
    • 你是对的!谢谢,我已经更新了答案中的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 2020-03-04
    • 2017-10-16
    • 2021-06-01
    相关资源
    最近更新 更多