Django - jQuery 数据表卡在加载中

Posted

技术标签:

【中文标题】Django - jQuery 数据表卡在加载中【英文标题】:Django - jQuery datatables stuck on loading 【发布时间】:2014-07-24 04:02:58 【问题描述】:

对不起,我对 Django 很陌生,并试图用一些从服务器返回的数据来加载一个 jQuery 数据表。返回的 json 格式很好。但是,数据未加载到表中,并且我在 firebug 控制台中收到以下错误:

TypeError: aData is undefined
for ( i=0 ; i<aData.length ; i++ ) 

此外,我尝试使用sAjaxDataProp 选项来调整aaData 的默认行为,但我不知道应该设置什么。无论如何,下面是所有内容的代码

jquery:

$(document).ready(function () 
    $('#rfctable').dataTable(
        "sAjaxDataProp": '', // I don't know if I need this or how to deal with it
        "ajax": 'http://127.0.0.1:8000/api/',
        "columns": [
             "fields": "rfc_number",
             "fields": "rfc_title",
             "fields": "rfc_question",
        ]

    );
);

html:

<table id="rfctable" class="display" cellspacing="0" >
    <thead>
    <tr>
        <th>Rfc Number</th>
        <th>RFC title</th>
        <th>RFC Questions</th>
    </tr>
    </thead>
</table>

从url返回的json:

[
    
        "pk": 1,
        "model": "rfc.rfcdocument",
        "fields": 
            "rfc_title": "123123123123",
            "rfc_answer_reviewed_by": 1,
            "rfc_required_fcd": true,
            "rfc_drawing_detail_number": "123",
            "rfc_required_sketch": true,
            "rfc_answer_authorized_by": 1,
            "rfc_issued_by": 1,
            "rfc_answer_issued_date": null,
            "rfc_specification_section": "34-5",
            "rfc_answered_date_architect": null,
            "rfc_question": "Salam baba?",
            "rfc_issued_date": null,
            "rfc_answer": "salama back!",
            "rfc_project": 1,
            "rfc_required_fls_review": true,
            "rfc_drawing_page_number": "54",
            "rfc_issued_to": 1
        
    
]

如果有人可以提供帮助,我将不胜感激。

【问题讨论】:

【参考方案1】:

库正在寻找来自服务器响应的aaData 属性中的数据。由于服务器正在返回一个对象列表,因此在尝试访问它时会说它是未定义的。

sAjaxDataProp 不能使用空字符串。你可以在这里阅读更多关于你应该从服务器返回的内容:http://legacy.datatables.net/usage/server-side。

将您的 jQuery 部分更改为:

$(document).ready(function () 
    $('#rfctable').dataTable(
        "sAjaxDataProp": 'data',
        "ajax": 'http://127.0.0.1:8000/api/',
        "columns": [
             "fields": "rfc_number",
             "fields": "rfc_title",
             "fields": "rfc_question",
        ]

    );
);

将来自服务器的响应更改为:

"data": [
    
        "pk": 1,
        "model": "rfc.rfcdocument",
        "fields": 
            "rfc_title": "123123123123",
            "rfc_answer_reviewed_by": 1,
            "rfc_required_fcd": true,
            "rfc_drawing_detail_number": "123",
            "rfc_required_sketch": true,
            "rfc_answer_authorized_by": 1,
            "rfc_issued_by": 1,
            "rfc_answer_issued_date": null,
            "rfc_specification_section": "34-5",
            "rfc_answered_date_architect": null,
            "rfc_question": "Salam baba?",
            "rfc_issued_date": null,
            "rfc_answer": "salama back!",
            "rfc_project": 1,
            "rfc_required_fls_review": true,
            "rfc_drawing_page_number": "54",
            "rfc_issued_to": 1
        
    
]

您还应该在响应中返回 iTotalRecordsiTotalDisplayRecordssEcho

【讨论】:

这对我有用。我正在使用 laravel。我刚刚添加了data 键。所以,return json_encode(['data' =&gt; $users]);

以上是关于Django - jQuery 数据表卡在加载中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 DJango 中停止页面重新加载 ajax jquery

django:bootstrap table加载django返回的数据

在 django 中:使用多个插件加载 jquery 时出现问题 - 或者:如何仅加载 jQuery 一次?

我无法使用带有 jquery 的 Handsontable 加载数据

页面加载后,Jquery,Django,Infinite Scroll 加载其余元素

Django/jQuery:处理模板继承和 JS 文件加载