Принудительно выполнить еще одну отправку перед отправкой по умолчанию - PullRequest
0 голосов
/ 03 августа 2020

Мне нужно отправить данные формы в api после отправки, но формы имеют действие на другую страницу в то же время, но мне нужно сделать это без изменений html код, потому что для этого нужно получать формы автоматически и при отправке получить входные значения для отправки api, прежде чем продолжить действие по умолчанию, посмотрите

index. html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="teste1.js"></script>
</head>
<body>
    <form action="/anotherpage">
        <label for="myName">Send me your name:</label>
        <input id="myName" name="name" value="John"><br>
        <label for="myEmail">Send me your email:</label>
        <input id="myEmail" name="email" value="Exemplo@exemplo.com"><br>
        <input type="submit" value="Send Me!">
      </form>
</body>
</html>

teste1. js

window.addEventListener( "load", function () {

function sendData() {

  const XHR = new XMLHttpRequest();
  const FD = new FormData( form );
  const data = {

    name: FD.get('name'),
    email: FD.get('email')

  }
  console.log(JSON.stringify(data));
  XHR.addEventListener( "load", function(event) {
  } );
  XHR.addEventListener( "error", function( event ) {
  } );
  XHR.open( "POST", "API_URL" );
  XHR.setRequestHeader('Content-type', 'application/json')
  XHR.send(JSON.stringify(data));

}

const form = document.forms.item(0);
  form.addEventListener( "submit", function ( event ) {

    event.preventDefault();
    sendData();
    event.currentTarget.submit();

  } );
} );

this sendData(); отлично работает без event.currentTarget.submit();, это не работает, потому что это отражение sh на странице действий, когда event.currentTarget.submit();, оно останавливает соединение для отправки данных.

я не знаю, как решить эту проблему , я пытаюсь поставить setTimeOut на ожидание 2 секунды, прежде чем вернуться к действию, но этот event.currentTarget.submit(); не работает в функции setTimeout, может кто-нибудь мне помочь, пожалуйста, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...