/** * * @param url 提交的url地址 * @param object 数据 * @param action 模块区分 * @param formId 需要验证输入字段的formId */ const queue = []; function mockPost(url, object, action, formId) { let formElement = document.getElementById(formId); fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' // 告诉服务器请求体为 JSON 数据 }, body: JSON.stringify(object), }).then(res => { if (res.status === 200) { return res.json(); } }).then(res => { if (res.code === 0) { removeValidCss(formId); //清空timeline document.getElementById('timeline_info_list').style.display = 'block'; setInterval(() => { if (queue.length > 0) { const tip = queue.shift(); // 出队 // 处理消息,比如添加到时间线 const timeline = document.getElementById('timeline_info_list'); if(tip.order===0){ timeline.innerHTML = ""; }else { const div = document.createElement('div'); div.className = 'timeline-item'; const time = document.createElement('time'); time.textContent = tip.time; const h3 = document.createElement('h3'); h3.textContent = tip.title; const p = document.createElement('p'); p.innerHTML = tip.message; div.appendChild(time); div.appendChild(h3); div.appendChild(p); timeline.appendChild(div); // 自动滚动到底部 timeline.scrollTop = timeline.scrollHeight; } } }, 100); } else { for (const item of res.errors) { if (formElement.elements[item.elementId].classList) { formElement.elements[item.elementId].classList.add("is-invalid"); document.getElementById(item.elementId + "_error_tip").innerHTML = item.message; } } } }) } function doWsMessageCall(message) { let tip = JSON.parse(message); queue.push(tip) } window.onload = function() { connectWs(); };