使用setInterval将数据定期发布到数据库

时间:2019-05-13 13:51:30

标签: javascript php setinterval

我想每隔几秒钟使用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 :(得分:0)

HTML表单提交具有默认行为,可在提交结束时刷新。

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

将事件传递给上面的函数

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

添加preventDefault以停止此默认行为。不同的浏览器有时会做出不同的反应,有时还必须执行event.stopPropagation(),这也可以防止事件触发对其父元素的点击。在您的确切情况下不需要。

编辑:

要完全停止提交时重新加载,您需要在提交时捕获事件,如下所示:

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