将参数传递给jQuery数据表中的sAjaxSource

时间:2013-06-18 04:39:05

标签: ajax codeigniter jquery datatables

我正在使用CodeIgniter,我遇到以下问题。

我在details.php中有一个控制器函数,它接受一个参数:

function details($id) {
    $this->datatables
         ->select('product_id, original_amount, quantity')
         ->from('orders');

    echo $this->datatables->generate();
}  

现在我需要从视图中调用它,即我希望DataTables像这样显示它:

<script>
$(document).ready(function() 
  $('#example').dataTable({
    ...
    'sAjaxSource' : 'admin/data/details',
    ...
  });
</script>

那么,如何将参数传递给sAjaxSource键,即$id变量?

2 个答案:

答案 0 :(得分:16)

您应该使用docs中指定的fnServerParams

$(document).ready(function() {
    $('#example').dataTable( {
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": "scripts/server_processing.php",
        "fnServerParams": function ( aoData ) {
            aoData.push( { "name": "more_data", "value": "my_value" } );
        }
    } );
} );

答案 1 :(得分:3)

我自己也在努力解决这个问题。 John Moses的回答对我不起作用,他提供的链接也提供了新文档的链接,我认为这些文档不适用于较旧版本的数据表。

虽然,我发现当前的服务器端处理工作类似于jQuery,其中带有“sAjaxSource”的旧版本不能以这种方式工作。

对我来说,我只是简单地在sAjaxSource的网址中添加了我的参数。所以在你的示例代码中:

$customPHPvar = "mycustomvar";

<script>
$(document).ready(function() {
    $('#example').dataTable( {
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": "scripts/server_processing.php?customvar=<?php echo $customPHPvar; ?>",
    } );
} );
</script>

在server_processing.php

$_GET['customvar'];