【问题标题】:Jquery datatables edit one row element and update dbJquery数据表编辑一行元素并更新数据库
【发布时间】:2018-02-24 23:21:50
【问题描述】:

我正在用 laravel 构建网站。我已经形成了数据表,其中有 5 列,第 5 列是一个按钮。单击该按钮时,我想将第 4 列元素从 false 变为 true。

我的数据表代码:

$(function() {
    $('#orders-table').DataTable({
        processing: true,
        serverSide: true,
        ajax: '{!! route('datatables.getorders') !!}',
        columns: [
            { data: 'full_name', name: 'full_name' },
            { data: 'email', name: 'email' },
            { data: 'number', name: 'number' },
            { data: 'created_at', name: 'created_at' },
            { data: 'completed', name: 'completed'},
            {
                "data": null,
                "defaultContent": "<button onclick='Completed()'>Edit</button>",
                "target": -1
            }
        ],
        "order" : [[3, "desc"]]
    });
});
$(function Completed(){



});

我这样叫桌子

public function getOrders()
{
    return datatables()->collection(Order::all())->toJson();
}

我不确定如何在按钮单击功能中访问我的订单属性或如何更新数据库。

【问题讨论】:

  • “订单”的主键是什么?比如你的 DataTable 中的哪一列是你的数据库(假设是 MySQL)表的 PK?
  • 是id,数据表中不显示
  • 即使不显示也需要添加到表格中。否则,您将无法根据 DataTable 的更改更新数据库。
  • 好的,我会这样做的。我是否应该搜索诸如使用 ajax 更新数据库之类的东西,如果实施得当,可以吗?
  • 我对数据表的了解并不多,但我认为这里的示例可能会给您一些启发。 editor.datatables.net/examples/simple/multiRow.html

标签: jquery laravel datatable


【解决方案1】:

我会走简单的路。使用 id 渲染最后一列,并使其成为按钮。

$('#example').dataTable( {
  "columnDefs": [ {
    "targets": 0,//number of column you want
    "data": "completed",
    "render": function ( data, type, row, meta ) {
var str;
if(row.completed === 0){
str = '<a class="complete-action-button" data-id="'+row.id+'" href="/api/orders/makeComplete" class="success">Complete</a>'; } else {
str = '<a class="complete-action-button" data-id="'+row.id+'" href="/api/orders/unComplete" class="danger">Uncomplete</a>'; 
}
      return str;
    }
  } ]
} );

在 laravel 中创建一些 api 路由,用于处理 jquery $.ajax。在 ajax 回调上使用简单的函数来更改按钮 url。

如果您在使用 jquery 函数时遇到问题,请告诉我们。

【讨论】:

  • 感谢您的帮助,但是如何发送 id 或对象本身,我尝试添加这样的 slug:str.href += "/" + row.id;在 if 内部,但这似乎不起作用。
  • 可以使用data-id属性,伪代码:$('.complete-action-button').on('click', function(e) {e.preventDefault(); var orderId= $(this).data('id'); ...ajax...callback..changing url/class...
  • 或者当然,正如你所说,在 laravel 中准备正确的带有 id 的 url 并检查那里的记录状态,更容易:)
  • 我可以使用 str.href 属性吗,因为它什么也没给我,不知道如何更改它。编辑:啊,我终于做到了,感谢您的帮助
  • 很高兴你成功了。对于属性使用 jQuery attr 方法。
猜你喜欢
  • 2019-10-10
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
  • 2021-10-07
  • 2013-11-27
相关资源
最近更新 更多