Squarespace: ошибка отправки формы: после успешной обработки данных формы с помощью JavaScript форма не отправляется в Mailchimp - PullRequest
0 голосов
/ 30 июня 2019

У меня есть форма в блоке формы Squarespace. Я успешно перехватываю форму перед отправкой (используя form.submit() слушатель) и успешно читаю и обрабатываю данные. Я читаю только данные формы (Array.from($('select'))). Я не вмешиваюсь в структуру формы или процесс отправки, кроме как перехватывать ее перед отправкой. e.preventDefault() не установлено.

JavaScript успешно выполняется. Он передает данные обновления таблицы в таблицу Amazon Web Services. AWS отправляет журналы на консоль, подтверждая успех. Я позволил JavaScript прекратить в случае успеха. Я попытался form.submit() позвонить в конце, но это не имеет никакого эффекта.

Нет сообщений об ошибках.

Действительно любопытным, аномальным поведением является . Я проверил его и обнаружил, что из пяти тестов два (первый и третий) успешно обновили мой список Mailchimp, а три - нет. Для этих трех я получил уведомление по электронной почте от Squarespace об ошибке отправки формы. Он не выдает сообщение об ошибке, кроме сообщения о том, что отправка в MailChimp не удалась.

Однако, когда я установил соединение с адресом электронной почты, отправка выполнялась каждый раз. Я получил уведомление по электронной почте о представлении. Это просто, когда хранилище форм MailChimp, что отправка не удается (иногда).

Я отключил список MailChimp от формы в диалоговом окне хранения форм Squarespace. Я удалил Squarespace из списка утвержденных приложений на Mailchimp, переподключил хранилище к своему списку Mailchimp и снова протестировал его. Отправка не удалась.

Вы можете найти форму на этой странице . Весь JavaScript можно найти на этой странице . Я также поместил это во фрагмент ниже. У него нет прямого подключения к AWS, потому что мне нужно было бы вставить свой секретный ключ доступа AWS в сценарий, и я не хочу этого делать.

Если кто-то может дать мне руководство относительно того, почему это происходит и как это исправить, я, безусловно, буду благодарен. На самом деле, я благодарен, что вы прочитали это далеко, можете ли вы помочь. Спасибо.

$('form').submit(function(e) {
  e.preventDefault();
  var a = Array.from($('select'))
    .map((select, i) => ({
      'index': i,
      'room': select.value
    }))
    .filter(select => select.room !== 'unsure' && select.room !== 'not attend');
  if( !a || a.length == 0 ) {console.log('a is null or undefined, or a.length == 0');}
    else {
     if(a[0].room == 'attend') {a[0].room = 'chapel';}  
     alert(JSON.stringify(a));
//   updateTable(a);
   }  //  end else
}); //  end def anonymous fn & submit

function updateTable(classes) {
  var timeslots = ['0830', '0900', '1030']
  var params = {};
  var ts = '';
  var rm = '';
  var dynamoDB = new AWS.DynamoDB();
  var err = null;
  
  for(var i = 0; i < classes.length; i++) {
    ts = timeslots[classes[i].index];
    rm = classes[i].room;
    console.log('ts, rm : ', ts, rm);
    params = {
                  'TableName': 'FHCRoomCounts',
                  'Key': {
                            'room': {
                                      'S' : rm
                                    },
                            'timeSlot': {
                                           'S': ts
                                        }
                         },
                  'ExpressionAttributeNames': {
                                                '#registrants': 'registrants'
                                              },
                  'ExpressionAttributeValues': {
                                                 ':n': { 'N': '1'} 
                                               
                                               },
                  'UpdateExpression': 'ADD #registrants :n',
                  'ReturnValues': 'ALL_NEW'
             };  // end params
             
               console.log('log params for i == ' + i);
               console.log(params);
               console.log('Executing dynamoDB updateItem on iteration i = ' + i);
                                        
    dynamoDB.updateItem(params, function(err, data) {
          if (err) {
                      console.log('Unable to update registrant: ' + '\n' + JSON.stringify(err, undefined, 2));
            } else {
                      console.log('Increase registrant succeeded: ' + '\n' + JSON.stringify(data, undefined, 2));
                   }  // end else
    });  // end def anonymous fn & def updateItem stateme
  }  //  end for
}  //  end def fn updateTable
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form method="post">
  <div>
    <label>First Name
    <input type="text" name="fname" size="25">
  </label>
  </div>
  <div>
    <label>Last Name
    <input type="text" name="lname" size="25">
  </label>
  </div>
  <div>
    <label>email address
    <input type="email" name="email" size="25">
  </label>
  </div>
  <div>
    <label>08:30 Keynote Speaker
    <select class="select" name="select 0830">
      <option value="unsure">unsure</option>
      <option value="attend">attend</option>
      <option value="not attend">not attend</option>
    </select>
  </label>
    <label>09:00 Classes
    <select class="select" name="select 0900">
      <option value="unsure">unsure</option>
      <option value="A">room A</option>
      <option value="B">room B</option>
    </select>
    </label>
    <label>10:30 Classes
    <select class="select" name="select 1030">
      <option value="unsure">unsure</option>
      <option value="A">room A</option>
      <option value="B">room B</option>
    </select>
  </label>
  </div>
  <div>
    <input type="submit" value="submit form">
  </div>
</form>

1 Ответ

1 голос
/ 01 июля 2019

Я считаю, что это сообщение об ошибке часто является результатом:

  1. Поля, требуемые MailChimp, не были заполнены в форме (двойная проверка, которую вы требуете, и поля заполнялись последовательно во время тестов), или
  2. Человек (адрес электронной почты) уже есть в списке MailChimp.
  3. Адрес электронной почты ранее был в списке, но был удален. MailChimp не будет повторно добавлять удаленных пользователей.

Предполагая, что это не ваш пользовательский javascript, и что вы получите те же результаты с добавленным или без вашего пользовательского JS, проверьте обе эти две возможные причины.

...