go-micro.dev/v5@v5.12.0/cmd/micro/web/main.js (about)

     1  // Minimal JS for reactive form submissions
     2  
     3  document.addEventListener('DOMContentLoaded', function() {
     4      document.querySelectorAll('form[data-reactive]')?.forEach(function(form) {
     5          form.addEventListener('submit', async function(e) {
     6              e.preventDefault();
     7              const formData = new FormData(form);
     8              const params = {};
     9              for (const [key, value] of formData.entries()) {
    10                  params[key] = value;
    11              }
    12              const action = form.getAttribute('action');
    13              const method = form.getAttribute('method') || 'POST';
    14              try {
    15                  const resp = await fetch(action, {
    16                      method,
    17                      headers: { 'Content-Type': 'application/json' },
    18                      body: JSON.stringify(params)
    19                  });
    20                  const data = await resp.json();
    21                  // Find or create a response container
    22                  let respDiv = form.querySelector('.js-response');
    23                  if (!respDiv) {
    24                      respDiv = document.createElement('div');
    25                      respDiv.className = 'js-response';
    26                      form.appendChild(respDiv);
    27                  }
    28                  respDiv.innerHTML = '<pre>' + JSON.stringify(data, null, 2) + '</pre>';
    29              } catch (err) {
    30                  alert('Error: ' + err);
    31              }
    32          });
    33      });
    34  });