第04章 过往

书迷正在阅读:
Id('msg');

    function showMsg(text, isErr) {

    msgEl.textContent = text;

    msgEl.className = 'msg ' + (isErr ? 'err' : 'ok');

    msgEl.style.display = 'block';

    setTimeout(function() { msgEl.style.display = 'none'; }, 3000);

    }

    function loadList() {

    fetch(API + '?action=list')

    .then(r => r.json())

    .then(res => {

    if (!res.ok) { showMsg(res.msg || '加载失败', true); return; }

    listEl.innerHTML = (res.data || []).map(row =>

    '<tr><td>' + row.id + '</td><td>' + escapeHtml(row.domain) + '</td><td>' + escapeHtml(row.title) +

    '</td><td><button class="btn edit-btn" data-id="' + row.id + '">修改</button> ' +

    '<button class="btn btn-danger del-btn" data-id="' + row.id + '">删除</button></td></tr>'

    ).join('');

    })

    .catch(() => showMsg('请求失败', true));

    }

    function escapeHtml(s) {

    var d = document.createElement('div');

    d.textContent = s;

    return d.innerHTML;

    }

    form.addEventListener('submit', function(e) {

    e.preventDefault();

    var id = editId.value;

    var isEdit = id !== '';

    var formData = new FormData();

    formData.append('action', isEdit ? 'edit' : 'add');

    if (isEdit) formData.append('id', id);

    formData.append('domain', editDomain.value.trim());

    formData.append('title', editTitle.value.trim());

    fetch(API, { method: 'POST', body: formData })

    .then(r => r.