Jquery 过滤Html数据表和Django中的Json数据
我在Django项目的页面中添加了一个Datatable。这些表应该显示从Django Rest Framework API端点检索到的一些数据 以下是检索到的数据示例的外观:Jquery 过滤Html数据表和Django中的Json数据,jquery,ajax,datatables,django-rest-framework,Jquery,Ajax,Datatables,Django Rest Framework,我在Django项目的页面中添加了一个Datatable。这些表应该显示从Django Rest Framework API端点检索到的一些数据 以下是检索到的数据示例的外观: { "item": "Someitem", "Price": 120, "Status": "Free" }, { "item": "SecondItem, "Price": 90, "Status": "Taken" }, 我想过滤这些记录,以便表中只显示状态设置为Fr
{
"item": "Someitem",
"Price": 120,
"Status": "Free"
},
{
"item": "SecondItem,
"Price": 90,
"Status": "Taken"
},
我想过滤这些记录,以便表中只显示状态设置为Free的记录,但我真的不知道如何从Jquery中做到这一点
下面是我用来加载表的代码:
$(document).ready(function() {
var table = $('#mydb').DataTable({
"serverSide": true,
"ajax": "/myapi/?format=datatables",
"columns": [
{data: "item",
{data: "Price"},
]
});
setInterval( function () {
table.ajax.reload();
}, 10000 );
});
我试图在Ajax调用中添加一个if语句来检查data.Pair,但它给了我一个未定义的错误。还有别的办法吗?非常感谢您的建议您可以这样做: 寻找方法。 代码: var table=$'mydb'.DataTable{ 服务器端:是的, ajax:/myapi/?format=datatables, 栏目:[ {数据:项目, {数据:价格}, {数据:状态} ] }) 然后像这样过滤:
var filteredData = table
.column( 2 )
.data()
.filter( function ( value, index ) {
return value == "Free";
} );
您可以将ajax添加到api中,并将过滤后的响应附加到datatable构造函数中。但是,由于您使用的是服务器端,我假设您是从服务器端分页的,因此您需要更改以下代码才能使用它
代码:
$.ajax{
url:/myapi/?format=datatables,
键入:“GET”,
数据类型:“JSON”
}
.doneresponse=>{
ifresponse!=未定义{
让data=response.data,
过滤的_数据=[];
$.eachdata,函数索引,值{
ifvalue.Status==Free{
过滤数据推送{
item:Someitem,
价格:120
};
}
}//结束每一个
//填表
var table=$'mydb'.DataTable{
服务器端:是的,
数据:过滤的数据,
栏目:[
{数据:项目,
{数据:价格}
]
};
}
}
编辑:
在做了一次JSFIDLE之后,我意识到我错过了第一个选项的remove方法,所以这里是修复方法:
var filteredData = table
.rows()
.indexes()
.filter( function ( index, value ) {
console.log(table.row(value).data().Status);
return table.row(value).data().Status == "Taken";
} );
table.rows( filteredData )
.remove()
.draw();
希望有帮助=如果您的服务器端API提供了一种过滤条目的方法,这不是一个更好的主意吗?否则,肯定会对您有所帮助。嘿!谢谢您的回答!只有一件事:代码var filterdata的第二段……jquery函数应该放在哪一部分上?您可以在同一个let子句中用数据对其进行赋值。好的!尝试了这个,但是表格显示为空白。试图理解原因。@Jack022我对答案进行了编辑,还添加了一个jsfiddle,希望能有所帮助