{
"dialog": [
{
"date": "16-04-2020",
"time": "10:35",
"text": "message Text 3"
},
{
"date": "16-04-2020",
"time": "09:16",
"text": "message Text 2"
},
{
"date": "15-04-2020",
"time": "18:59",
"text": "Text message 1"
}
]
}
$.ajax({
url: 'chat.php',
type: "GET",
dataType: "json",
success: function(json) {
if (typeof(json.dialog) == 'object') {
$('div.dialog').append(json.dialog.map(function(n) {
return '<div><span name="text">' + n.text + '</span><span name="time">' + n.time + '</span></div>';
}).join("));
}
}
});
<div class="dialog">
the <div>16-04-2020</div>
the <div><span name="text">message Text 3</span><span name="time">10:35</span></div>
the <div><span name="text">message Text 2</span><span name="time">09:16</span></div>
the <div>15-04-2020</div>
the <div><span name="text">message Text 1</span><span name="time">18:59</span></div>
</div>
the <div>%date%</div>
if (typeof(json.dialog) == 'object') {
const _dialog = json.dialog.reduce((acc,cur,i,a)=>{
const index = acc.findIndex(item => item.date === cur.date)
if( index !== -1 ){
acc[index].message.push({text: cur.text, time: cur.time})
}else{
cur.message = []
cur.message.push({text: cur.text, time: cur.time})
acc.push(cur)
}
return acc
},[])
$('div.dialog').html(_dialog.map(item => {
let div = `<div>${item.date}</div>`
item.message.forEach(_item => {
div += `<div><span name="text">${_item.text}</span><span name="time">${_item.time}</span></div>`
})
return div;
}).join("));
}
[
{
date:.
messages: [...]
},
]
Find more questions by tags jQueryJavaScriptAJAX
success: function(json) {
...
} - helen commented on April 19th 20 at 12:26