0
我试图创建一个简单的报告,我从ajax请求中获取条目,并且想在一周中的某一天简单地对条目进行分组。例如,我想出来的东西简单:问题与时刻做一个简单的时间表JS
----------------------------------
Monday - May 2nd - 2016
-----------------------------------
Entry 1
Description
Date: 2016-05-02 09:45
-----------------------------------
Entry 2
Description
Date: 2016-05-02 10:55
-----------------------------------
-----------------------------------
Tuesday - May 3rd - 2016
-----------------------------------
No entries to display ...
-----------------------------------
-----------------------------------
Wednesday - May 4th - 2016
-----------------------------------
Entry 3
Description
Date: 2016-05-04 09:45
-----------------------------------
Entry 4
Description
Date: 2016-05-04 10:55
----------------------------------
我目前停留在这是,如果有一天没有条目代码的一部分,然后返回:
$('#dataTable').append('<tr><td colspan="2">No entries to display...</td></tr>');
是有一种方法可以简单地说出,如果周入境长度的日期等于0,那么返回上面的?
这就是我现在的情况,现在有点乱,因为我一直在尝试这么多事情。
https://jsfiddle.net/vLdn68ko/20/
var items_by_date = {}; // declare an object that will have date indexes
$.ajax({url:"/SomeUrlBeginninWithSlash",
dataType: 'json',
cache: false,
success: function (data) {
data.d.results.map(function(item){
var minDate = moment("2016-05-02");
var maxDate = moment("2016-05-04");
var duration = moment(minDate).diff(moment(maxDate), 'days');
while(duration > 0){
item_date = moment(minDate).format('dddd D MMMM YYYY');
// if the date index does not exist we need to declare it
if(!items_by_date[item_date]) items_by_date[item_date] = [item];
// else we can just push the item on that array
else items_by_date[item_date].push(item);
var minDate = moment(minDate).subtract(1, 'day');
var duration_test = duration_test-1;
}
console.log(items_by_date);
})
drawTable(items_by_date);
}
});
function drawTable(data){
$('#dataTable').html('');
Object.keys(data).sort(function(a,b){return new Date(a)-new Date(b)}).forEach(function(d){
$('#dataTable').append('<tr><td colspan="2" style="font-weight: bold;">'+d+'</td></tr>');
data[d].map(function(item){
if(item.ID == ""){
$('#dataTable').append('<tr><td colspan="2">No entries to display...</td></tr>');
}else{
$('#dataTable').append('<tr><td>'+item.ID+'</td><td>'+item.Description+'</td></tr>');
}
})
})
}
这里是我的Ajax请求的例子
responseText: {
d: {
results: [{
ID: "1",
Description: "Test1",
Date: "2016-05-02 09:45"
}, {
ID: "2",
Description: "Test2",
Date: "2016-05-02 10:45"
}, {
ID: "3",
Description: "Test3",
Date: "2016-05-04 11:45"
}, {
ID: "4",
Description: "Test4",
Date: "2016-05-04 11:45",
}]
}
}
有没有人有任何想法,缺什么IM?
哇,谢谢丹尼尔。只是好奇地知道如何使这个工作与ajax请求。我将你的代码复制到jsfiddle中,但是得到的错误是未定义的https://jsfiddle.net/vLdn68ko/21/你会知道我可能遇到什么问题吗? –
mockjax看起来像jQuery 2.2.0停止工作,回滚修复它。还要调用'drawTable(data.d.results)'而不是'data':https://jsfiddle.net/j3yg2j7j/1/ –
啊,非常感谢Daniel,它的工作现在好多了。 –