Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用来自Django的JsonResponse更新DataTable工作不正常_Javascript_Jquery_Django_Ajax_Datatables - Fatal编程技术网

Javascript 使用来自Django的JsonResponse更新DataTable工作不正常

Javascript 使用来自Django的JsonResponse更新DataTable工作不正常,javascript,jquery,django,ajax,datatables,Javascript,Jquery,Django,Ajax,Datatables,我有一个Django应用程序和一个页面,其中数据被写入我正在使用DataTables设置样式的表中。我有一个非常简单的问题,事实证明它非常复杂。我有一个下拉过滤器,用户可以在其中选择一个选项,单击过滤器,然后ajax请求更新表的html,而无需重新加载页面。问题是,这不会更新数据表 我的html: 第1列 第2列 第3列 第4列 第5列 {%include'results/results_table.html%} 结果\u table.html: {result_set%}中的结果为% {{re

我有一个Django应用程序和一个页面,其中数据被写入我正在使用DataTables设置样式的表中。我有一个非常简单的问题,事实证明它非常复杂。我有一个下拉过滤器,用户可以在其中选择一个选项,单击过滤器,然后ajax请求更新表的html,而无需重新加载页面。问题是,这不会更新数据表

我的html:

第1列 第2列 第3列 第4列 第5列 {%include'results/results_table.html%} 结果\u table.html:

{result_set%}中的结果为% {{result.col1} {{result.col2}} {{result.col3} {{result.col4} {{result.col5} {%endfor%} javascript:

函数筛选结果{ var-id=[]; var IDSet=$”.id选择“; 对于变量i=0;i def筛选器_结果请求,ID: ids=[ids.split'中id的intid,'] account\u set=account.objects.filterid\u in=ids 表单=结果过滤器执行 result\u set=result.objects.filteraccount\u in=account\u set 上下文={ “形式”:形式, “结果集”:结果集 } 返回renderrequest,“results/results\u table.html”,上下文 现在的情况是,Ajax正确地更新了我在HTML页面上看到的内容,但它没有更新实际的数据表。因此,我可以筛选一个特定的ID,例如,它有两个结果,这样可以在HTML页面上显示这两个结果,而无需重新加载。但是,DataTable仍然包含其余的结果,因此,当只有2个结果时,仍然会出现下一个页面,这是没有意义的

我还尝试更改视图以返回JSON响应,返回的代码在JS中被注释掉,当我这样做时,我得到了警告:DataTable在第0行第0列遇到了意外的参数“0”,即使来自Django的数据是JSON格式的正确数据


真的困在这里了,谢谢你的帮助。

我想出了一个办法让它工作起来。虽然这可能不是最好的方法,但它很简单,所以我希望这能帮助其他人。将JavaScript更改如下:

函数筛选结果{ $'results-table'.DataTable.destroy; var-id=[]; var IDSet=$”.id选择“; 对于变量i=0;i
我知道可能有一种更好的方法可以做到这一点,那就是更新数据表,而不是销毁和重新创建数据表。如果有人知道它,请随意将其作为一个答案发布,但现在这个解决方法对我来说是好的

您需要重新加载DataTable—仅更新HTML不会更新任何DataTable方法。有多种方法可以做到这一点:这个问题是针对dataTable,而不是dataTable。此外,我已经尝试获取一个JSON响应,该响应有效,然后清除表并使用.rows.adddata写入行,其中data是我的JSON对象。即使我得到了正确格式的JSON对象,这也给了我警告:DataTable在第0行第0列遇到了意外的参数“0”