2015-10-19 21 views
0

我想请一些帮助。为了保持从javascript的功能分开我通常做这样的事情:没有任何php代码的Javascript文件

1st。创建script<head>标签在那里我把所有来自PHP,例如变量里面:

<head> 
<script> 
    var url = "<?php echo site_url() ?>admin/products"; 
    // etc etc 
</script> 
</head> 

第二。然后在我的file.js我可以访问变量,并做任何我想要做的与JavaScript和jQuery。

<script src="path/to/some/file.js"></script> 

// then in my script in file.js I can do whatever I want 
url : url, 
etc etc 

这工作得很好,但可能有一些情况下,我对插件的一些设置设置动态的,像这样的例子:

$('.dataTable').DataTable({ 
     'bProcessing' : true, 
     'bServerSide' : true, 
     'sAjaxSource' : url, // this is '<?php echo site_url() ?>admin/products', as above 
     'sServerMethod' : 'POST', 
     'pagingType': 'full_numbers', 

     'columns': [ 
      <?php foreach($my_array as $item): ?> // * 
      { 'data': '<?php echo $item; ?>' }, 
      <?php endforeach; ?> 
     ], 

所以*部分应该是纯JavaScript这样的事情

'columns': [ 
    { 'data': 'Title' }, 
    { 'data': 'Description' }, 
    etc etc 
], 

如何在这些情况下做同样的事情,所以在我的js脚本里面不会有任何php?

回答

1

为什么你不以同样的方式继续? 这是否适合您?

<script> 
    var url = "<?php echo site_url() ?>admin/products"; 
    var myArray = <?php echo json_encode($my_array)?>; 
</script> 

JS

(...) 
'pagingType': 'full_numbers', 
'columns': myArray 
(...) 
+0

注意,写入这样的:<?PHP的回声json_encode($ my_array)> VAR myArray的=;是正确的,但如果您使用的是像eclipse或netbeans这样的ide,则会在语法颜色上产生混淆。 – Mimouni