【问题标题】:On page ready, get Javascript array created during dom creation在页面准备就绪时,获取在 dom 创建期间创建的 Javascript 数组
【发布时间】:2016-01-01 09:52:43
【问题描述】:

我在使用 arr.push 创建 dom 期间创建了一个 Javascript 数组。 但是,在页面就绪函数中,它返回一个空数组。

<script type="text/javascript">      

    var short_urls = [];
</script>

 $(document).ready(function() {  
      console.log(short_urls);
});

<?
    foreach ($d_json['result'] as $key => $value) {

        ?>
<script>
    short_urls.push("<? echo $shorten_url  ?>");
</script>
<?
}
?>

【问题讨论】:

  • 那行不通,因为您将服务器端代码与客户端代码混合在一起。在php中输出数组定义并将其发送到服务器。
  • var short_urls = JSON.parse('&lt;? echo json_encode($d_json['result']) ?&gt;');
  • 我认为这是最简洁的解决方案@Andreas

标签: javascript php jquery arrays dom-events


【解决方案1】:
<script type="text/javascript">      

        var short_urls = [];
$(document).ready(function() {  
          console.log(short_urls);
    });
</script>



<?
    foreach ($d_json['result'] as $key => $value) {

        ?>
<script>
    short_urls.push("<? echo $shorten_url  ?>");
</script>
<?
                             }
                             ?>

【讨论】:

    【解决方案2】:

    由于 PHP 将在任何 javascript 之前执行,您可以写出 javascript 变量而无需使用 array.push 方法。但是,问题使用了一个 php 变量 $shorten_url - 它在哪里定义?我认为这是来自foreach 循环的值

    Approach #1
    -----------
    <script type="text/javascript">      
        var short_urls = [];
        <?php
            foreach( $d_json['result'] as $key => $value ) {
                $shorten_url='???';
                echo "short_urls.push('{$shorten_url}');";
            }
        ?>
        $( document).ready( function() { console.log( short_urls ); } );
    </script>
    
    
    Approach #2
    -----------
    <script type="text/javascript">      
        <?php
            $tmp=array();
            foreach( $d_json['result'] as $key => $value ) {
                $shorten_url='???';
                $tmp[]=$shorten_url;
            }
            echo "var short_urls = ['".implode("','",$tmp)."'];";
        ?>
        $( document).ready( function() { console.log( short_urls ); } );
    </script>
    

    【讨论】:

      猜你喜欢
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      相关资源
      最近更新 更多