【问题标题】:How to access the ajax response of the datatable outside the datatable in django?如何在django中访问数据表之外的数据表的ajax响应?
【发布时间】:2020-04-25 00:51:59
【问题描述】:

在我的 django 应用程序中,数据表发出 ajax REST api 请求,其中响应如下:

{
    "data": ["some content here"],
    "time_data": [
        {
            "Last_updated": "Jan 07 2020 06: 09 CST",
            "Next_scheduled": "Jan 07 2020 07: 09 CST"
        }
    ]
}

这是django REST API的视图如下:

class clustersView(views.APIView):
    def get(self, request):
        results = {}
        clusters = get_collection('clusters')
        results['data'] = ClusterSerializer(clusters, many=True).data
        results['time_data'] = get_collection('time_data')
        return Response(results)

在上述响应 json 中,data 键已按如下方式访问并用于填充数据表,并且工作正常。

$(document).ready(function () {
    myTable = $('#table').DataTable({
        ajax: {
            "type": "GET",
            "url": "{% url 'Clusters' %}",
        },
        columns: [
            { 'data': 'Master' },
            { 'data': 'Workers' },
            { 'data': 'Build' },
            { 'data': 'Team' }]
    });
});

但是下一个键,即time_data 需要在数据表之外的 div 中使用。

如何在 javascript 中访问响应内容?这样我就可以在响应中使用time_data

注意:访问 django 响应变量 results ,会抛出未定义变量的错误。

【问题讨论】:

  • response.time_data 将返回数组,因此 response.time_data[0] 将是包含两个键/值的第一个对象。假设 response 是您在 javascript 中处理的对象
  • 但是如果你向我们展示你的javascript代码可能会更清楚
  • @dirkgroten 我已经用更多信息更新了这个问题,请查看它。
  • 查看this 以获取有关如何访问数据并在另一个 DOM 元素中使用数据的示例。还有更多关于它here

标签: javascript django datatables


【解决方案1】:

看看ajax.dataSrc。当用作回调时,您可以在将响应传递给 DataTables 之前对其进行操作,并且显然还可以初始化或填充其他元素:

myTable = $('#table').DataTable({
  ajax: {
    type: "GET",
    url: "{% url 'Clusters' %}",
    dataSrc: function(data) {
      doSomethingWith( data.time_data )
      return data.data
    }
  },
  columns: [ ... ]
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-30
    • 2021-07-10
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多