Отправка формы не работает на устройствах iOS

У меня есть форма, которую я сделал с помощью nodemailer, и она работает на настольных устройствах и устройствах Android, но не работает на ios.

Я понятия не имею, что я могу делать неправильно.

Веб-сайт: https://ozixmedia.com.

HTML:

<section id="contact" class="wow fadeIn">
<h1 id="target" class="">Envianos Tu Consulta</h1>
    <div class="row container">
<form method="POST" class="col s12">
  <div class="row">
    <div class="input-field col s6">
      <input id="name" type="text" class="validate" name="name">
      <label for="name">Nombre</label>
    </div>
      <div class="input-field col s6">
      <input id="last_name" type="text" class="validate" name="name">
      <label for="last_name">Apellido</label>
    </div>
  </div>
  <div class="row">
    <div class="input-field col s6">
      <input id="email" type="email" class="validate" name="name">
      <label for="email">Email</label>
    </div>
      <div class="input-field col s6">
      <input id="phone" type="number" class="validate" name="name">
      <label for="phone">Teléfono</label>
    </div>
  </div>
    <div class="row">
      <div class="input-field col s12">
        <textarea id="message" class="materialize-textarea" data-length="120" name="name"></textarea>
        <label for="message">Consulta</label>
      </div>
    </div>
    <input type = "submit" value = "Enviar" class="btn-large-light">
</form>
</div>

</section>

Мой JS-код:

$('form').on('submit', e => {
  e.preventDefault();

  const email = $('#email').val().trim();
  const name = $('#name').val().trim();
  const last_name = $('#last_name').val().trim();
  const phone = $('#phone').val().trim();
  const text = $('#message').val().trim();

  const data = {
    email,
    name,
    last_name,
      phone,
    text
  };

  $.post('/email', data, () => {
    console.log('Server recieved our data')
  });
  window.location.replace('/redirect')
});

person Nicolas    schedule 16.08.2019    source источник
comment
что происходит, когда вы запускаете код на ios? Пробовали ли вы тестировать в Safari, если у вас Mac?   -  person Fernando B    schedule 16.08.2019
comment
Когда я отправляю форму, веб-сайт перенаправляет меня на /redirect, но письмо не отправляется. Я не пробовал на маке, но пробовал на айфоне с сафари и хромом   -  person Nicolas    schedule 16.08.2019
comment
Я уже нашел проблему. Location.replace должен находиться внутри обратного вызова $.post.   -  person Nicolas    schedule 20.08.2019


Ответы (1)


Для ios, который работает в Safari, попробуйте изменить const на var, чтобы посмотреть, сработает ли это.

Как упоминалось здесь, это проблема ES2016.

$('form').on('submit', e => {
  e.preventDefault();

  var email = $('#email').val().trim();
  var name = $('#name').val().trim();
  var last_name = $('#last_name').val().trim();
  var phone = $('#phone').val().trim();
  var text = $('#message').val().trim();

  var data = {
    email,
    name,
    last_name,
      phone,
    text
  };

  $.post('/email', data, () => {
    console.log('Server recieved our data')
  });
  window.location.replace('/redirect')
});
person Fernando B    schedule 16.08.2019