DataTables TableTools 插件 - 如何在 Codeigniter 中配置 sSwfPath 路径?

Posted

技术标签:

【中文标题】DataTables TableTools 插件 - 如何在 Codeigniter 中配置 sSwfPath 路径?【英文标题】:DataTables TableTools plugin - How to configure sSwfPath path in Codeigniter? 【发布时间】:2013-03-28 14:45:00 【问题描述】:

我的previous question 重新发布,因为我没有得到任何满意的答案

问题如下:

我在 JSBin http://live.datatables.net/aqowib/2 中提供了我的代码,我无法正确链接到 sSwfPath。我在我的应用程序中使用 codeiginter,所以我尝试按如下方式加载文件:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script src="http://<?php base_url(); ?>/assets/js/jquery.dataTables.js" type="text/javascript"></script>
<script src="http://<?php base_url(); ?>/js/jquery.dataTables.columnFilter.js" type="text/javascript"></script>
<script src="http://<?php base_url(); ?>/media/js/ZeroClipboard.js" type="text/javascript"></script>
<script src="http://<?php base_url(); ?>/media/js/TableTools.js" type="text/javascript"></script>

我的脚本标签包含以下代码:

$(document).ready(function()
    var oTable = $('#datatables').dataTable(
        "sPaginationType":"full_numbers",
        "sDom": 'Tlfrtip',
        "oTableTools": 
            "sSwfPath": "<?php base_url();?>/media/swf/copy_cvs_xls_pdf.swf"
        ,
        "sScrollX": "100%",
        "bScrollCollapse": true,
        "bAutoWidth": true,
        "aaSorting":[[0, "asc"]],
        "bJQueryUI":true
    ).columnFilter(
        aoColumns: [ null,
                     null,
                      type: "select", values: [ 'male', 'female']  ,
                     null,
                     null,
                     null,
                     null,
                      type: "select", values: [ '1', '2', '3', '4', '5', '6', '7','8','9','10']  ,
                      type: "select", values: [ 'A', 'B', 'C']  ,
                     null,
                      type: "select", values: ['P', 'A'] ,
                     null,
                     null,
                     null
            ]
    );
);

每次我收到 404 错误,提示无法加载 SWF 文件 - 请检查 SWF 路径

请帮助我我哪里错了? 提前致谢。

【问题讨论】:

【参考方案1】:

啊,解决了!!

您只需要在 TableTools.js 文件中配置 sSwfPath URL,即

更改 TableTools 初始化的默认设置

我去:

TableTools.DEFAULTS = 
    "sSwfPath":         "http://localhost/codegen/media/swf/copy_cvs_xls_pdf.swf", <----------------- HERE IS WHERE I GOT STUCK 
    "sRowSelect":       "none",
    "fnPreRowSelect":   null,
    "fnRowSelected":    null,
    "fnRowDeselected":  null,
    "aButtons":         [ "copy", "csv", "xls", "pdf", "print" ]
;

谢谢:-)

【讨论】:

这是否意味着您的 &lt;?php base_url();?&gt; 返回了错误的值? 亲爱的 NealCaffrey,我们如何在 laravel 4.2 页面中使用 sSwfPath?请给建议 虽然这可能解决了您的问题,但这并不是导致问题的原因。你忘了使用回声,所以 berbt 是对的。 &lt;?php base_url();?&gt; 部分不返回值。请参阅 Vishav B Kaith 的答案。 附加:只有在您的 PHP 文件中有 javascript 代码时,它才会起作用。如果没有,您必须通过将其分配给全局 Javascript 变量来使其可用于您的 javascript 文件,如下所示:echo '&lt;script type="text/javascript"&gt; window.baseUrl = ' . base_url(); 现在您可以使用 javascript 文件中的 window.baseUrl 访问它。【参考方案2】:

无需写完整路径 只需在 base_url 之前放置 echo :) 改变

<?php base_url();?>

<?php echo base_url();?>

【讨论】:

这确实提供了问题的答案。作者问他错在哪里,这就是他错的地方。这几乎可以肯定地解决了他的问题

以上是关于DataTables TableTools 插件 - 如何在 Codeigniter 中配置 sSwfPath 路径?的主要内容,如果未能解决你的问题,请参考以下文章

r 这显示了如何将DataTables插件(在本例中为TableTools)添加到您的Shiny应用程序中。

jQuery:如何以编程方式隐藏 TableTools 按钮

DataTables/TableTools - 单击一行时是不是可以获得所选行的准确列表?

DataTables JS / TableTools JS - 导出和打印

jQuery dataTables - TableTools:导出时隐藏行和列

TableTools 未加载到 DataTables 表上