Передача значения массива в формат JSON

#javascript #json

#javascript #json

Вопрос:

Я создаю приложение электронной почты, которое отправляет сообщения другим людям. В настоящее время он работает, за исключением столбца получателей. Прямо сейчас я жестко запрограммировал электронное письмо в столбец получателей, чтобы оно заработало. Причина в том, что поле получателей должно быть массивом.

Каков наилучший способ передачи значения из пользовательской формы (несколько адресов, разделенных запятыми) в формат JSON?

Ниже показано, как у меня это сейчас.

Спасибо!

 const element = document.getElementById('sendEmail');
  element.addEventListener('click', function() {
    fetch('/emails', {
    method: 'POST',
    body: JSON.stringify({
      recipients: 'card51short@gmail.com',
      subject: document.querySelector('#compose-subject').value,
      body: document.querySelector('#compose-body').value
    })
  })
  .then(response => response.json())
  .then(result => {
      // Print result
      console.log(result);
  });
  });
}
  

Комментарии:

1. Разве вы не можете сделать это массивом напрямую? {recipients: ['card51short@gmail.com','card51short2@gmail.com'], subject: document.querySelector('#compose-subject').value, body: document.querySelector('#compose-body').value }

2. значение похоже на строку, разделенную запятой, и вам нужно преобразовать это значение в массив?

3. Вопросы о «наилучшем способе» не подходят для переполнения стека. Лучший способ часто отличается в зависимости от вашего варианта использования. Неясно, с чем у вас возникли трудности. Вы не показали попытки передать список адресов электронной почты на серверную часть. Есть разные способы сделать это. Это может быть строка, разделенная запятой / пробелом, или это может быть массив и упомянутые первые два комментария

Ответ №1:

 const element = document.getElementById('sendEmail');
  element.addEventListener('click', function() {

    const emailsFromForm = [ // NEW
      document.querySelector('#email1').value, // NEW
      document.querySelector('#email2').value // NEW
    ] // NEW

    fetch('/emails', {
    method: 'POST',
    body: JSON.stringify({
      recipients: emailsFromForm, // EDITED
      subject: document.querySelector('#compose-subject').value,
      body: document.querySelector('#compose-body').value
    })
  })
  .then(response => response.json())
  .then(result => {
      // Print result
      console.log(result);
  });
  });
}