Использование setInterval для периодической публикации данных в БД - PullRequest
0 голосов
/ 13 мая 2019

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

<body>
 <div class="container">
   <div class="row">
     <form onclick="startPost()" method='POST' enctype='multipart/form-data'>
     <textarea name="field1" id="field1"></textarea>
     <input type="submit" id="post">
   </form>
 </div>

function startPost(){
    setInterval(function(){
        $("field1").load("post.php");
    }, 4000)
}
});

post.php

<?php
include "connection.php";

$post1 = $connection->real_escape_string($_POST['field1']);

$insert = "INSERT INTO DBtable (WebText) VALUES ($post1)";

$resultinsert = $connection->query($insert);


if(!$resultinsert){

  echo $connection->error;
}else{
  echo "<p> Text is posting </p>";
}

?>

Я хочу, чтобы данные публиковались в БД каждые четыре секунды, но страница просто обновляется при нажатии кнопки подтверждения.Connection.php подключается к базе данных

1 Ответ

0 голосов
/ 13 мая 2019

HTML-формы имеют поведение по умолчанию, которое обновляется в конце отправки.

<form onclick="startPost(event)" method='POST' enctype='multipart/form-data'>

Передайте событие вашей функции, как указано выше

function startPost(event){
    event.preventDefault();
    setInterval(function(){
        $("field1").load("post.php");
    }, 4000)
}
});

Для предотвращения этой ошибки добавьте предотвращение появления по умолчанию.поведение по умолчанию.Различные браузеры иногда реагируют по-разному, и иногда необходимо также выполнить event.stopPropagation(). Это предотвращает запуск события кликами по родительским элементам.Не требуется в вашем конкретном случае.

РЕДАКТИРОВАТЬ:

Для того, чтобы точно остановить перезагрузку при отправке, вам нужно было бы перехватить событие при отправке следующим образом:

<form onsubmit="preventReload(event)" method='POST' enctype='multipart/form-data'>
function preventReload(event) { event.preventDefault(); }
...