在不刷新页面的情况下发送POST

时间:2017-05-01 00:29:08

标签: php jquery ajax

我正在创建一个网络聊天应用程序,我有一个问题 - 我想发送一条消息来自用户并将其添加到数据库,但我不想重新加载我的页面,我做了类似的事情,但它不起作用:

文件index.php:

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
 setInterval(function () {
         $("#chat-content").load('chat.php');
    },10);

    $("#submit").click(function(){  
        var clientmsg = $("#message").val();
        $.post("chat.php", {text: clientmsg});  
        $("#message").attr("value", "");
        return false;
    });
</script>
</head>
<body>
<div id="chat-content">
</div>
</body>
<form method="post" id="messageform">
<input type="text" id="message" name="message"></input>
<input id="submit" name="sumbit" type="submit" value="Send" />
</form>

文件chat.php:

<?php include('db.php');
$query = "SELECT * FROM `czat`;";
$result = $con->prepare($query);
$result->execute();
$count = $result->fetchColumn();
if($count > 100){
    $query = "TRUNCATE `czat`;";
    $result = $con->prepare($query);
    $result->execute();
}

$query = "SELECT * FROM `czat` ORDER BY id ASC LIMIT 10;";
$result = $con->prepare($query);
$result->execute();
while($row = $result->fetch()){
        echo $row["nazwa"].' - '.$row["tresc"].'<br>';
}

if(isset($_POST['text'])){
    $text = $_POST['text'];
    $query = "INSERT INTO `czat` (`id`, `nazwa`, `tresc`) VALUES (NULL, 'dd', '$text');";
    $result = $con->prepare($query);
    $result->execute();
}
?>

db.php是db的标准连接。

3 个答案:

答案 0 :(得分:0)

您必须使用ajax。 Ajax提供异步数据通信。

例如,您可以将数据(POST或GET)从客户端发送到服务器端。您使用来自服务器端客户端的数据,并将结果返回给客户端。 (结果可以是html或json。这个决定可以根据你的选择而改变。)

这是一个示例ajax脚本。

var messageText = $("#message").val();
messageText = messageText.trim(); 
$.ajax({ 
    url : "chat.php", 
    type: "POST", 
    data : {text : messageText} , 
    success: function(data, textStatus, jqXHR) { 
      console.log(data);// You can see the result which is created in chat.php
    },
    error: function (jqXHR, textStatus, errorThrown) {
      console.log(textStatus);// if there is an error
    }
});

答案 1 :(得分:0)

因为您的提交按钮位于表单中,所以按钮的默认操作是对“操作”的POST。在表单元素中定义的属性(在这种情况下,未在表单中定义,它将POST到当前页面)。

您需要为您的javascript

预防默认()
$("#submit").click(function(event){  
        event.preventDefault();
        var clientmsg = $("#message").val();
        $.post("chat.php", {text: clientmsg});  
        $("#message").attr("value", "");
        return false;
    });

答案 2 :(得分:0)

帖子成功吗?(状态200好吗?)你试过吗

echo $text;

定义$ text后?你有价值吗?来吧,不要只做一件事,然后回来寻求帮助,解决问题,并试着找出错误!