【问题标题】:Using Server Side JavaScript and trying to get the properties of an element on my DOM使用服务器端 JavaScript 并尝试在我的 DOM 上获取元素的属性
【发布时间】:2014-06-21 20:56:35
【问题描述】:

我正在使用服务器端 JavaScript 与我们的数据进行交互。例如:

<script runat="server">
        var subscriberScoringHistoryDE = DataExtension.Init("de_name");
        var rows = subscriberScoringHistoryDE.Rows.Retrieve();
        for (var i = 0; i < 5; i++)
        {

        }
</script>

上面将运行,因为它正在访问我们服务器上的 JS API。所以无论如何,上面运行良好。我遇到的问题是,如果我将以下内容与上述内容结合使用:

<script>
        var barChartData = {

            // labels will be the dates
            labels : ["January","February","March","April","May","June","July"],
            datasets : [
                {
                    fillColor : "rgba(220,220,220,0.5)",
                    strokeColor : "rgba(220,220,220,1)",

                    // data will be the count
                    data : [65,59,90,81,56,55,40]
                },  
            ]
        }

    var myLine = new Chart(document.getElementById("canvas").getContext("2d")).Bar(barChartData);

    </script>

<body>
    <canvas id="canvas" height="450" width="600"></canvas>
</body>

JS 代码将看不到任何称为“画布”的东西。我什至尝试将runat="server" 放在我的画布上。我可以想象这是因为它在服务器上查找名为“canvas”的 ID 而不是我的客户端 DOM,我是否正确假设?

是否可以混合使用客户端 JavaScript 和服务器端 JavaScript?如何让我的 JavaScript 查看客户端 COM 上的画布?

【问题讨论】:

    标签: javascript html canvas serverside-javascript exacttarget


    【解决方案1】:

    您需要将主脚本包装在 onload 类型的处理程序中,因此它只会在 dom 加载/解析后运行。一种快速/肮脏的方法是

    <script>
       function foo() {
          // your var barchartdata etc... goes here
       }
    </script>
    
    <body onload="foo();">
    ....
    </body>
    

    如果你使用 jquery,你会得到更可靠的结果

    $(document).ready(function() {
       /// var barchartdata stuff goes here
    });
    

    至于混合客户端/服务器端代码,这实际上是不可能的,因为它们在完全不同的环境中执行。客户端JS代码不能直接调用服务器端代码,服务器端代码也不能调用客户端代码,因为JS调用不能通过HTTP层。您可以使用 ajax 调用来间接调用事物,但您仍在使用 HTTP。

    【讨论】:

      猜你喜欢
      • 2018-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多