Javascript 如何在不刷新页面的情况下从数据库中的textarea添加数据
我正在用PHP、HTML、MySql等开发一个登录和注册系统,所以我的聊天有问题 我想从textarea获取数据,如果点击了按钮,清空textarea,将文本发送到数据库而不刷新页面!我有一个系统可以刷新数据库中的数据,并刷新index.php中的div聊天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
救救我 您需要执行一个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有所帮助