Datatables jquery动态设置ajax url参数
我正在使用datatables并通过ajax从数据库检索数据:Datatables jquery动态设置ajax url参数,jquery,json,ajax,url,datatables,Jquery,Json,Ajax,Url,Datatables,我正在使用datatables并通过ajax从数据库检索数据: ... deferRender: true, ajax: { url: "/api/tracks/classical", dataSrc: '', contentType: "application/json" }, "columns": [ { "data"
...
deferRender: true,
ajax: {
url: "/api/tracks/classical",
dataSrc: '',
contentType: "application/json"
},
"columns": [
{ "data": "Category" },
{ "data": "Title" },
...
选择菜单选项后,我希望更改url以读取不同的数据集并重新加载表格:
如
/api/tracks/经典版将成为
/api/曲目/声学
(这实际上是使用不同的参数调用相同的api。)
我尝试在单击菜单时设置新的url,调试时,我可以看到它确实调用了新的url,但随后立即再次调用旧的url,并重新绘制了相同的表
$('#menu-t-acoustic').click(function () {
$('#mytable').ajax.url('/api/tracks/acoustic').load();
});
那么如何使用jquery/json/datatables实现这一点呢
我认为url
ajax: {
url: "/api/tracks/classical"
应该能够使用变量而不是硬编码字符串,但我不知道任何语法来做到这一点-有可能吗
所以。。。如何动态设置ajax url?如何让datatables使用新url重新加载?尝试调用
datatables
返回的实例变量load
。
差不多
var yourdatatable = $('#mytable').DataTable( {
....
ajax: {
url: "/api/tracks/classical",
dataSrc: '',
contentType: "application/json"
},
....
});
yourdatatable.ajax.url('/api/tracks/acoustic').load();
来自文档的示例
var table = $('#example').DataTable( {
ajax: "data.json"
} );
table.ajax.url( 'newData.json' ).load();
为了实现动态呈现,您可以使用变量(即
var-apiToQuery
),然后将变量添加到api url的末尾:
$('.yourMenuButtons').click(function () {
var apiToQuery = $(this).val();
$('#mytable').ajax.url('/api/tracks/' + apiToQuery).load();
});
但是,要回答您关于渲染默认ajax调用的问题,是否需要硬编码?我认为您可以将ajax调用从初始表代码中删除,然后在单独的事件处理程序中执行:
$('document').ready(function() {
$('#mytable').ajax.url('/api/tracks/defaultApiQuery').load();
}
创建数据表时,将其分配给变量:
var datatable;
$(document).ready(function () {
datatable = $("#table").DataTable({
...
});
});
function filterResults(filter) {
datatable.ajax.url('/api/tracks/' + filter).load();
}
DataTables将很好地附加自己的参数。祝你好运
很晚了,但我认为这可以帮助其他人