почему он не выполняет функцию внутри onsubmit? - PullRequest
0 голосов
/ 29 марта 2020

html:

<div class="container">
  <form action="#" onsubmit="ejecucion()" class="was-validated">
    <div class="form-group">
      <label for="sleep">Tiempo entre mediciones:</label>
      <input type="text" class="form-control" id="sleep" placeholder="Tiempo en minutos entre mediciones (por defecto es 2 minutos)" name="sleep" required>
      <div class="valid-feedback">OK!</div>
      <div class="invalid-feedback">Ingrese un valor! Unicamente numeros!</div>
    </div>
    <div class="form-group">
      <label for="points">Cantidad de puntos en grafico/s:</label>
      <input type="text" class="form-control" id="points" placeholder="Ingrese la cantidad de puntos que desea ver en los graficos (por defecto es 300 puntos)" name="points" required>
      <div class="valid-feedback">Valid.</div>
      <div class="invalid-feedback">Ingrese un valor! Unicamente numeros!</div>
    </div>
    <div class="form-group form-check">
      <label class="form-check-label">
        <input class="form-check-input" type="checkbox" name="remember" required> Verifique los valores introducidos
        <div class="valid-feedback">OK!</div>
        <div class="invalid-feedback"></div>
      </label>
    </div>
    <button type="submit" class="btn btn-primary">Configurar</button>
  </form>
</div>

javascript:

const config = {
    apiKey: "",
    authDomain: "",
    databaseURL: "",
    projectId: "",
    storageBucket: "",
    messagingSenderId: "",
};
firebase.initializeApp(config);


function ejecucion(){
    var sleep  = document.getElementById("sleep").value;
    var points = document.getElementById("points").value;

    firebase.database().ref('dispositivos/' + mac + "/config/control").set({
        delay: sleep,
        points: points
      });

    location.replace("home.html"); // Redirecciono al inicio
}

Если я добавляю cosole.log, он запускается при отправке формы, но не записывается ни в базу данных Firebase, ни в редирект работает.

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

1 Ответ

0 голосов
/ 29 марта 2020

Запись в базу данных Firebase Realtime происходит асинхронно. В настоящее время вы уходите со страницы, прежде чем операция записи будет отправлена ​​в базу данных. Чтобы дождаться завершения записи, используйте блок then():

firebase.database().ref('dispositivos/' + mac + "/config/control").set({
  delay: sleep,
  points: points
}).then(function() {
  location.replace("home.html"); // Redirecciono al inicio
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...