【发布时间】:2016-10-22 14:15:19
【问题描述】:
我有一个从 json.php 文件中获取数据的数据表。它工作正常,但现在我想要一个带有各种选项的选择框(例如:'今年、去年、未结账单、已结账单、逾期等),在选择时将 ajax 发布变量data: {cmd: ($('#selected').val()} 发送到 json.php(其中将细化请求的记录)和ajax.table.reload();,以便显示新记录。
这是我迄今为止尝试过的:
<select class="form-control" name="selection" id="selection">
<option value="thisMon">This Month</option>
<option value="lasMon">Last Month</option>
<option value="thisYr">This Year</option>
<option value="lasYr">Last Year</option>
<option value="open">Open</option>
<option value="closed">Closed</option>
</select>
<script>
$(document).ready(function() {
$('#selection').change(function() {
var table = $('#datatable-buttons').DataTable({
"ajax": {
url: "scripts/json-expenses.php",
dataSrc: "",
data: { length: $('#selection').val() }
},
dom: "Bfrip",
"columns": [
{ data: "id", visible: false, searchable: false },
{ data: "expense_date"},
{ data: "supplier",
render: function(data, type, row){
return '<a href="/numbers/edit-expense.php?id='+ row.id +'">'+ data +'</a>';
}
},
{ data: "amount" },
{ data: "gst" },
{ data: "status",
render: function(data, type, row) {
if (row.due_date !== null) {
var dueDateArr = row.due_date.split("-");
var dueDate = new Date(dueDateArr[0], dueDateArr[1]-1, dueDateArr[2]);
var todayDate = new Date();
}
if (data == "Not Paid" && todayDate > dueDate) {
return '<label class="label label-danger">Overdue</label>';
}
if (data === "Paid") {
return '<label class="label label-success">'+ data +'</label>';
}
else if (data === "Not Paid") {
return '<label class="label label-default">'+ data +'</label>';
}
}
},
{ data: "due_date",
defaultContent: ""
}
],
"order": [ 1, 'desc' ],
paging: false,
fixedHeader: true
});
});
$('#selection').change(function(){
table.ajax.reload();
});
});
</script>
编辑:
它只工作一次,并在table.ajax.reload();ReferenceError: Can't find variable: table 的行上给出错误
下次我选择另一个选项时,数据表会报错:Cannot reinitialise DataTable.
【问题讨论】:
-
问题出在哪里?您的帖子中没有真正的问题。
-
问题:此代码无效,需要帮助
-
什么部分?你必须更具体。据我所知,您的 php 脚本可能会失败。
-
我已经用更多细节更新了这个问题
标签: jquery ajax select post datatables