php - 如何计算 Datatable 最终总金额
问题描述
我正在为我的日常销售编写报告。当我尝试将最终总金额输出显示为未定义时,我使用警报消息输出显示为未定义检查了总金额,我不知道错误是什么。到目前为止我尝试了什么,我附在下面
var total = 0;
function get_all() {
var from_date = $('#from_date').val();
var to_date = $('#to_date').val();
$('#tbl-projects').dataTable().fnDestroy();
$.ajax({
url : "../php/report/all_sales.php",
type : "POST",
dataType : 'JSON',
data : { from_date : from_date, to_date : to_date },
async : false,
success : function (data) {
$('#tbl-projects').dataTable({
dom : 'Bfrtip',
buttons : [
'excel', 'pdf', 'print'
],
"aaData" : data,
"scrollX" : true,
"aoColumns" : [
{"sTitle": "Invoice No", "mData": "id"},
{"sTitle": "Date", "mData": "date"},
{"sTitle": "Total", "mData": "total"},
{"sTitle": "Pay", "mData": "pay"},
{"sTitle": "Due", "mData": "due"},
]
});
total += Number(total);
alert(total);
},
error : function (xhr) {
console.log('Request Status: ' + xhr.status );
console.log('Status Text: ' + xhr.statusText );
console.log(xhr.responseText);
var text = $($.parseHTML(xhr.responseText)).filter('.trace-message').text();
console.log(text)
}
});
}
解决方案
Total
变量是在函数外部定义的,而不是在函数内部定义 total 或将其设为全局 var。
求和线total += Number(total);
需要total
从data ajax response
循环内部获取。
因此,您的功能可以如下所示:
function get_all() {
var total=0;//local varialble
var from_date = $('#from_date').val();
var to_date = $('#to_date').val();
$('#tbl-projects').dataTable().fnDestroy();
$.ajax({
url:"../php/report/all_sales.php",
type: "POST",
dataType: 'JSON',
data:{from_date:from_date, to_date:to_date},
async:false,
success: function (data) {
$('#tbl-projects').dataTable({
dom: 'Bfrtip',
buttons: [
, 'excel', 'pdf', 'print'
],
"aaData": data
,
"scrollX": true,
"aoColumns": [
{"sTitle": "Invoice No", "mData": "id"},
{"sTitle": "Date", "mData": "date"},
{"sTitle": "Total", "mData": "total"},
{"sTitle": "Pay", "mData": "pay"},
{"sTitle": "Due", "mData": "due"},
]
});
data.forEach(function(recordInLoop) {
total += Number(recordInLoop.total);
});
},
error: function (xhr) {
console.log('Request Status: ' + xhr.status );
console.log('Status Text: ' + xhr.statusText );
console.log(xhr.responseText);
var text = $($.parseHTML(xhr.responseText)).filter('.trace-message').text();
console.log(text)
}
});
}
推荐阅读
- java - 如何在另一个活动中调用一个活动的对象?
- image-processing - 如何准备混合对象 .svg 进行处理?
- powershell - 递归地将子文件夹中的文件夹/文件移动到其父文件夹
- c# - C# if 语句不起作用
- c# - 如何使用 SelectNodes 排除特定类?
- angular - 在 http 请求响应中调用 toPromise 函数时未调用 map 函数
- c# - 指数超出范围。报表查看器 C#
- javascript - last iterated value is coming in all objects
- python - Python递归限制与堆栈大小?
- c# - 在itemscontrol wpf C#中命名后,如何检查使用itemscontrol动态创建的控件的状态