Javascript 如何在不刷新页面的情况下从数据库中的textarea添加数据

Javascript 如何在不刷新页面的情况下从数据库中的textarea添加数据,javascript,php,jquery,html,mysql,Javascript,Php,Jquery,Html,Mysql,我正在用PHP、HTML、MySql等开发一个登录和注册系统,所以我的聊天有问题 我想从textarea获取数据,如果点击了按钮,清空textarea,将文本发送到数据库而不刷新页面!我有一个系统可以刷新数据库中的数据,并刷新index.php中的div聊天 救救我 您需要执行一个ajax事件来获取textarea的内容并将其发送到数据库,我建议使用类似JQuery的简单框架:您可以使用以下代码: 下面使用AJAX和PHP, 首先,为按钮创建一个函数,当按下发送按钮时,将执行AJAX函数: fu

我正在用PHP、HTML、MySql等开发一个登录和注册系统,所以我的聊天有问题

我想从textarea获取数据,如果点击了按钮,清空textarea,将文本发送到数据库而不刷新页面!我有一个系统可以刷新数据库中的数据,并刷新index.php中的div聊天


救救我

您需要执行一个ajax事件来获取textarea的内容并将其发送到数据库,我建议使用类似JQuery的简单框架:

您可以使用以下代码:

下面使用AJAX和PHP, 首先,为按钮创建一个函数,当按下发送按钮时,将执行AJAX函数:

function msgsend() 
{
 var msg = $("#message").val();
 if (msg!='')
  {
   $('#message').val("");
   $.post("msgsubmit.php", { msg: msg },  
   function(result)
   {  
    msgrecv();
   }); 
  }
}
然后检查是否收到新消息并填充消息字段:

function msgrecv(){
 $.post("msgchk.php",  {temp0 : 1},
 function(result){  
 var div = document.getElementById('convo');
 div.innerHTML = div.innerHTML + result;
 if (result)
  {
   var elem = document.getElementById('convo');
   elem.scrollTop = elem.scrollHeight;
  }
 }); 
}
所以,逻辑。每个用户都有一个lastid,它告诉消息用户上次看到的id,然后当用户向数据库添加新消息时,调用AJAX函数并将消息提交到数据库,调用msgrecv函数以获取对话框中消息的详细信息,注意,这里的消息框变为空,在另一端,每隔10秒自动调用函数msgrecv以检查是否有新消息,在PHP代码中,我创建了一个会话变量$lastid,它存储最后一条消息的id,然后检查数据库中的消息id>$lastid,如果有什么,只需回显/打印出来,这将作为AJAX函数的结果

另外,我在我的一个项目中使用了此代码,因为我不知道您的代码,所以您可能需要根据您的代码修改此代码

并且elem.scrollTop=elem.scrollHeight;只需滚动到新消息Conva box的底部,因为新消息显示在Conva box的底部,所以每当新消息到达时,用户不必向下滚动即可看到

更新数据库时出错: 那么,您可以查看我的PHP代码以供参考:这是用于消息提交的

$msgcount = $row['messages'];
$msgcount = $msgcount + 1;
$chk=1;
$sql = "INSERT INTO ".$jobid."_conversation (date, from_id, from_username, to_writer, message, writer_read) 
        VALUES (now(), $userid, '$username', 0, '$message', 0)";
if (mysqli_query($con, $sql)) 
{
 $sql1 = "UPDATE jobs SET messages='$msgcount' WHERE id=$jobid";
 if(mysqli_query($con, $sql1))
  {
   echo 1;
  }
 else
  {
   echo 0;
  }
 }
 else
 {
  echo 0;
 }
在这里,如果添加到数据库中成功,则返回1,如果添加失败,则返回0

现在检查消息:

$lastid = $row1['id'];
if ( $lastid > $id)
{
 $to_writer = $row1['to_writer'];
 $message = $row1['message'];
 $rtrn = $rtrn."<div class=\"row\">";
 if ($to_writer == 1)
 {    
  $rtrn = $rtrn."<div class=\"well well-sm col-sm-offset-1 col-sm-8\">".nl2br($message)."</div>";
 }
 else
 {
  $rtrn=$rtrn."<div class=\"well well-sm col-sm-offset-3 col-sm-8\">".nl2br($message)."</div>";
 }
  $rtrn=$rtrn."</div>";
}
此处,$towriter是消息发送对象的用户名,用于检查消息是否应位于对话框的右侧或左侧,以区分已发送和已接收的消息。。。还有一些HTML,因为我使用引导程序在一个井中显示每条消息

希望这有助于…:

我有以下代码:

<?php
session_start();

require_once("conf/mysql.php");
$nome = $_SESSION["nome"];
$mensagem = $_POST["msg"];

mysqli_query($con, "INSERT INTO chat (user, message) VALUES ('$nome','$mensagem')");
?>
该指数为:

    <!-- Chat -->
<div class="container">

<div class="row">

<div class="col-md-8 col-md-offset-2">
<div class="panel container-fluid">
<center><h4><b> Chat: </b></h4></center>

<div class="well" >
<div class="loader"></div>

<script>
    $(document).ready(function () {
        $('#msg').change(function () {
            if ($.trim($('#msg').val()).length < 1) {

                $('#enviar').addClass('disabled');

            } else {

                $('#enviar').removeClass('disabled');
                //No guarantee it isn't mindless gibberish, sorry.

            }
        });
    });
</script>

<script type="text/javascript" language="javascript">
function msgsend() 
{
 var msg = $("#msg").val();
 if (msg!='')
  {
   $('#msg').val("");
   $.post("enviar.php", { msg: msg },  
  }
}
</script>

<div id="chat">
<div id="status" style="display: none;"></div>
</div>
</div>

<center>
<form id="ajax" role="form" method="post">

<div class="form-group">

<textarea id="msg" type="text" name="chat" class="form-control" placeholder="Digite aqui..."></textarea>


</div>
</form>
<button id="enviar" name="submit" class="btn btn-success disabled"> Enviar </button>

</center>

</div>

</div>
</div>

</div>

使用ajax发送表单当然可以研究一下,并测试一些代码?编辑:好像你有代码;那么它在哪里呢?救救我怎样Mud比这个问题更清楚。我对ajax几乎一无所知,我的网站上的代码,我举了一些互联网的例子,它很少!你有下面的答案;现在就去问他们。我把这个传过去。这个问题不清楚,范围太广。我投了后者的票。我会举一些例子,因为我一点也不知道如何使用ajax@SampaioLeal然后你需要看一些ajax教程你好,谢谢你的帮助,但是我有麻烦了!我在你的代码中使用了这个,但出现了一些问题,我创建了一个表单、一个textarea和一个没有类型submit的按钮,然后是你的脚本,获取textarea的文本,然后发送到php文件并发送到数据库?嗯,它给出了一个错误,方法是post?如果是这样的话,aki是可以的,但是没有发送任何东西!希望这对@SampaioLeal有所帮助