Laravel和jquery数据表删除行


Laravel and jquery datatable delete row

我使用的是laravel 5.2、Jquery 1.10和MYSQL 5.7。

我在laravel中使用RESTful服务作为我的消息模型。

我试图在Jquery数据表中呈现一个消息列表,并在每一行上提供一个删除按钮,当按下该按钮时,应在MessageController.php上启动destroy方法,删除该行,然后重新加载消息索引页面以显示更新的数据表。

数据表最初是正确生成的,但删除按钮不会触发控制器上的删除方法。我假设我用于生成删除按钮的ajax代码一定是错误的。

提前感谢您的帮助。

我的数据表ajax脚本是-

  $(document).ready( function () {
    $('#message_table').DataTable({
        "searchable": false,
        "ajax": {
            "url": "/api/message",
            "type": "POST",
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        },
        "columns": [
            { "data": "id"},
            { "data": "subject",
                "render": function(data,type,row,meta) {
                    return '<a href="/message/'+row.id+'">'+data+'</a>';
                }
            },
            { "data": "created_at",
                "render": function ( data, type, full, meta ) {
                    // instantiate a moment object and hand it the string date
                    var d = moment(data);
                    var month = d.month() +1 < 10 ? "0" + (d.month() +1) : d.month() +1;
                    var day = d.date()  < 10 ? "0" + (d.date()): d.date();
                    return month + "/" + day + "/" + d.year();
                }
            },
            {"defaultContent": "null", "render": function(data,type,row,meta) {
                return '<button action="' + $(location).attr('protocol') + $(location).attr('host') + '/message/'+row.id+ '"' + 'name="_method"' + 'method="post"' +'type="submit"' + 'value="Delete"'+'>'+ 'Delete</button>';
            }
            }
        ]
    });
} );

最后一个函数中为删除按钮生成的HTML是-

<button action="http:localhost:8000/message/6" name="_method" method="post" type="submit" value="Delete">Delete</button>

消息控制器删除方法-

   public function destroy($id)
{
    Message::destroy($id);
    return Redirect::route('message.index');
}

如果您使用的是laravel的restful控制器,那么destroy方法是通过delete http方法。因此,最好的选择是创建小型表单,如:

<form action="http:localhost:8000/message/6" method="post">
    <input type="hidden" name="_method" value="delete">
    <button type="submit">Delete</button>
</form>