2016-01-01 25 views
0

我在使用arr.push创建dom期间创建javascript数组。 但在页面准备函数,它返回空数组在页面准备好了,在创建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> 
<? 
          } 
          ?> 
+0

这不能工作,因为你与客户端代码混合服务器端代码的价值。在php中输出数组定义并将其发送到服务器。 – Joerg

+1

'var short_urls = JSON.parse('<?echo json_encode($ d_json ['result'])?>');' – Andreas

+0

我认为这是最新的解决方案@Andreas – RamRaider

回答

0
<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> 
<? 
          } 
          ?> 
0

由于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>