在 CodeIgniter 中使用 jQuery 用另一个数据表填充数据表

Posted

技术标签:

【中文标题】在 CodeIgniter 中使用 jQuery 用另一个数据表填充数据表【英文标题】:Filling a dataTable with data from another one using jQuery in CodeIgniter 【发布时间】:2013-08-30 21:51:55 【问题描述】:

我使用 CodeIgniter,我有两个数据表(在两个单独的视图中。相同的 js、模型和控制器文件)

我可以用 SELECT 查询填充第一个表,它可以正常工作。

我的问题是我需要来自第一个表的数据(用于查询)(使用单击选择哪一行)来填充第二个表。我还不能让它工作。我已经在 phpMyAdmin 中执行了所需的 SELECT 查询,它可以工作。

控制器文件

function refreshT2()
    $id = $_POST['id'];
    $id = stripslashes($id);
    $id = mysql_real_escape_string($id);
    $this->load->model('model');
    $data=$this->model->getAllById($id);
    echo json_encode($data);

js文件

$(document).ready( function () 
    $("#table1").addClass("started");
    $("#table2").addClass("started");

    var t1Source = "controller/refreshT1";
    var t2Source = "controller/refreshT2";

    var oTablet1=$('#table1').dataTable(
        "sScrollX": "100%",
        "sPaginationType":"full_numbers",
        "bJQueryUI":true,
        "sDom": 'R<"H"lfr>t<"F"ip>',
        "bDeferRender": true,
        "bProcessing": true,
        "bServerSide": true,
        "aaSorting": [[ 0, "desc" ]],
        "sAjaxSource": ft1Source
    );

    $("#table1 tbody").click(function(event) 
        var iPos=oTablet1.fnGetPosition(event.target.parentNode);
        var aData=oTablet1.fnGetData(iPos);

        var id=aData[2];

        $('input[name=id]').val(id);
    /* When I click on the first dataTable the field 'id' is filled properly */

        var oTableft2 = $('#table2').dataTable(
            "sScrollX": "100%",
            "sPaginationType":"full_numbers",
            "bJQueryUI":true,
            "sDom": 'R<"H"lfr>t<"F"ip>',
            "bDeferRender": true,
            "bProcessing": true,
            "bRetrieve": true,
            "bDestroy": true,
            "bServerSide": true,
            "aaSorting": [[ 0, "desc" ]],
            "sAjaxSource": t2Source
        );
     );

如果我需要提供更多信息/代码,请告诉我。

感谢您的宝贵时间。

编辑:当我用真实值切换$id = $_POST['id']; 时,它会起作用。如何检索这些数据?

我不想使用“按钮+动作”解决方案。如果它在 js 中工作,我将不需要任何发送/接收方法。我需要的是如何将参数传递给第二个表。

【问题讨论】:

您的问题是从服务器端传递值对吗? 让我们为您调试它,您点击 table1 的行是否正常工作,以及您发送到服务器以供其他视图正确接收更新的数据/ID。如果是,那么我们从 db 中得到了什么,以及什么格式,那么您是否能够解析并将其与 table2 绑定?调试它 我刚刚发现问题出在 $id = $_POST['id']; 部分。我将其切换为实际值并且它起作用了 看来我需要用另一种方法传递我的id。 【参考方案1】:

事实证明,我需要将 id 添加到 sAjaxSource 中的链接中,如下所示:

"sAjaxSource": t2Source+"?id="+id

在我的控制器中使用$_GET 而不是$_POST

【讨论】:

这里是一个示例 cms,它使用带有服务器端处理的数据表供您参考。 github.com/gencms/sample-gencms

以上是关于在 CodeIgniter 中使用 jQuery 用另一个数据表填充数据表的主要内容,如果未能解决你的问题,请参考以下文章

在 codeigniter 中使用 jquery ajax 进行表单验证

使用 codeigniter 和 jquery 进行 AJAX 分页

无法在 Codeigniter 中使用 jquery 设置正确的图像路径

在codeigniter中使用jquery的日期选择器不起作用

在 CodeIgniter 中使用 jQuery 用另一个数据表填充数据表

Codeigniter 购物车使用 jQuery 删除单个元素